unity python热更新_Unity C#热更新方案 ILRuntime学( 三 )


5.配置.dll输出路径
右键工程, 选择生成选项卡,在下方的输出路径里浏览到文件夹或填写相对路径:..\..\\\
5.生成.dll
右键工程,选择生成 。
生成成功后可以看到如下提示,如果失败则根据错误提示进行处理 。
6.修改Unity Demo中的脚本
主要修改脚本中加载dll的名称,改为 。
并且添加调用热更方法的代码 。
修改后如下:
using ;
using .;
using .IO;
using ..;
class:
//是的入口,最好是在一个单例类中保存,整个游戏全局就一个,这里为了示例方便,每个例子里面都单独做了一个
//大家在正式项目中请全局只创建一个
;
.IO. fs;
.IO. p;
void Start()
(());
()
//首先实例化的,是一个应用程序域,每个都是一个独立的沙盒
= new ...();
//正常项目中应该是自行从其他地方下载dll,或者打包在中读取,平时开发以及为了演示方便直接从中读取,
//正式发布的时候需要大家自行从其他地方读取dll
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//这个DLL文件是直接编译.sln生成的,已经在项目中设置好输出目录为,在VS里直接编译即可生成到对应目录,无需手动拷贝
//工程目录在\\\1.6\Demo\~
//以下加载写法只为演示,并没有处理在编辑器切换到平台的读取,需要自行修改
#if
WWW www = new WWW(. + "/.dll");
#else
WWW www = new WWW("file:///" + . + "/.dll");
#endif
while (!)
yieldnull;
if (!.())
.Debug.();
byte[] dll = ;
();
//PDB文件是调试数据库,如需要在日志中显示报错的行号,则必须提供PDB文件,不过由于会额外耗用内存,正式发布时请将PDB去掉,下面的时候pdb传null即可
#if
www = new WWW(. + "/.pdb");
#else
www = new WWW("file:///" + . + "/.pdb");
#endif
while (!)
yieldnull;
if (!.())
.Debug.();
byte[] pdb = ;
fs = new (dll);
p = new (pdb);
try
.(fs, p, new .Mono.Cecil.Pdb.());
catch
Debug.("加载热更DLL失败,请确保已经通过VS打开///1.6/Demo//.sln编译过热更DLL");
();
();
void ()
#if DEBUG && ( |||| )
//由于Unity的接口只允许在主线程使用,为了避免出异常,需要告诉主线程的线程ID才能正确将函数运行耗时报告给
. = ....;
#endif
//这里做一些的注册,示例暂时没有需要注册的
void ()
//,第一次方法调用
//.(".", "", null, null);
// 实例化中的类
obj = .(".");
.(".", "Test", obj);
void ()
if (fs != null)
fs.Close();
if (p != null)
p.Close();
fs = null;
p = null;
运行Unity,可以看到输出了Hello World
至此,Hello World部分已经全部完成了 。
总结:
使用时,除了工程的配置稍微麻烦一些外,其他部分都不难,Demo做的很完善,基本是开箱即用 。具体使用细节建议仔细阅读官方文档: