自从我凌晨两点放下喝醉的小姐姐回家写博客之后,小姐姐对我愈发的崇拜了👻👻,约我今晚一块学习ILRuntime(带好身份证🤩),我这一想必须要未雨绸缪,安排!!!
选了一个全市最好的网吧,斥巨资通宵5元
💰💰请小姐姐一块学习
一起记录下学习内容。
这是这一系列文章的总目录链接
Unity热更新 ILRuntime 从零开始 HelloWorld(二)
🎁处理报错
在上一篇博客中,我们导入了官方的demo,也解决了报错无法运行的问题上一篇链接:热更新 ILRuntime 从零开始 介绍及安装 (一)
这次我们开始讲解下官方的第一个案例场景,HelloWorld
切换到场景后,直接运行,发现报错了
那改如何处理呢?
🔆🔆个人感觉,热更的其实就是你的.dll文件,之所以会报错,是因为你根本还没有编译对应的.dll文件,可以按照下面的流程来解决报错。🔆🔆
🌸1.设置脚本编辑器为VS
把unity的默认编辑器设置为VS,方便操作 Edit——Preferences
🌸2.找到热更工程,用VS打开
这是对应的工程路径,文件夹后面加上 波浪线,在Unity的Project面板中是不会显示的,以后的小秘密文件夹都可以这么干🤪🤪
用VS打开工程后,我们就可以进行下一步了。
🌸3.创建StreamingAssets文件夹,生成.dll 文件
在Project面板中创建StreamingAssets文件夹,用于暂时存放编译好的.dll文件。
用VS打开后,右键 HotFix_Project 生成
可以看到成功生成了.dll文件
🌸4.生成.dll 文件不成功
如果在生成的时候报错了,如下图:
我们可以更改下api的等级
亲测,就可以正常生成了。
现在点击运行,就不会报错了,还会有相应的 打印信息
那到底是怎么运行的呢?请继续往下看。
🎁脚本逻辑
🌲1.打开HelloWorld脚本
先找到 01_HelloWorld 场景中的 GameObject 上挂载的脚本 HelloWorld ,打开HelloWorld
🌲2.引入命名空间
脚本里有很多的中文注释,讲解的很详细,首先要 引入命名空间
using System.IO;
using ILRuntime.Runtime.Enviorment;
创建应用程序域,并且最好作为单例
AppDomain appdomain;
🌲3.开启协程:
通过LoadAssembly
加载.dll文件,InitializeILRuntime();
初始化ILRuntime,接下来就可以直接调用.dll文件里面的方法了,
void OnHotFixLoaded()
{
//HelloWorld,第一次方法调用
appdomain.Invoke("HotFix_Project.InstanceClass", "StaticFunTest", null, null);
}
🌲4.修改代码
用VS打开HotFix_Project工程,找到对应的InstanceClass
类,找到我们刚才在unity调用的那个方法StaticFunTest
看下方法里面的执行内容:
public static void StaticFunTest()
{
UnityEngine.Debug.Log("!!! InstanceClass.StaticFunTest()");
}
这就是我们运行unity,debug出来的内容了。
如果我们想debug出Hello World!,先要修改代码如下,然后HotFix_Project重新生成.dll文件。
public static void StaticFunTest()
{
UnityEngine.Debug.Log("!!! InstanceClass.StaticFunTest()");
UnityEngine.Debug.Log("Hello World!");
}
最后运行Unity 看下效果
😁到这,我们就成功的通过ILRuntime,打印出了"Hello World!"😁
🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲
🎁调试插件
🏳️🌈一、插件下载
官方插件需要到GitHub上下载,这是地址
如果GitHub上下载不了,我也给大家下载好了,可以直接用,这是链接
ILRuntimeDebugger_VS15_17_19
🏳️🌈二、插件安装
安装插件一定要注意:关闭VS
注意VS版本
,适用于VS2015(Update3以上)或VS2017、VS2019
🏳️🌈三、开始调试
1.更改脚本
为了方便演示调试,我们来稍微改一下代码:当按下F1的时候就打印信息
打开HelloWorld脚本,在update里面添加以下脚本:
void Update()
{
if (Input.GetKeyDown(KeyCode.F1))
{
OnHotFixLoaded();
}
}
想要调试,必须要在dll和pdb都加载完毕,执行appdomain.DebugService.StartDebugService(56000);
所以我们加一行代码,appdomain.DebugService.StartDebugService(56000);
2.打断点,运行unity
用VS打开HotFix_Project工程,打上断点
运行unity。
3.打开调试插件窗口
在HotFix_Project工程里面打开调试插件的窗口 Debug->Attach to ILRuntime
在弹出来的窗口中填入被调试的主机的IP地址以及调试服务器的端口
点击attach,就开始调试了。
4.开始调试
在unity内按下F1,就可以跟正常的VS调试一样用了
🙈🙈我们在网吧折腾了一宿,终于完事了,傻白甜的小姐姐都学会,你呢?🙈🙈
总结
欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。
如果各位看官觉得文章有点点帮助,跪求各位给点个“一键三连”,谢啦~
声明:本博文章若非特殊注明皆为原创原文链接
https://blog.csdn.net/Wrinkle2017/article/details/120085835
————————————————————————————————
💢💢版权声明
版权声明:本博客为非营利性个人原创
所刊登的所有作品的著作权均为本人所拥有
本人保留所有法定权利,违者必究!
对于需要复制、转载、链接和传播博客文章或内容的
请及时和本博主进行联系
对于经本博主明确授权和许可使用文章及内容的
使用时请注明文章或内容出处并注明网址
转载请附上原文出处链接及本声明