栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

ILRuntime Demo总结

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ILRuntime Demo总结

简介

众所周知,目前 ILRuntime 已经成为新项目主流的热更方案,相比于传统各种Lua的热更方案来说,ILRuntime有着更高的开发效率和更低的学习成本,同时通过编译成dll热更新,比起lua脚本来说,封装更加整洁和可控。目前ILRuntime已经成为Unity主推的一款热更方案。

安装和demo路径

直接参考前人的教程,这里不多赘述

HelloWorld

在运行测试完官方demo中的HelloWorld项目之后(如果没测试完,请按照上面的链接继续看),开始进行测试

  1. 在热更内容中创建自定义类
        public static void StaticFunTest()
        {
            //UnityEngine.Debug.Log("!!! InstanceClass.StaticFunTest()");
            StaticTest();
            var testA = new TestAClass();
			testA. log();
        }
        
  	class TestAClass
    {
        public void Log()
        {
            UnityEngine.Debug.LogWarning("LOGLOGLOG");
        }
	}
  1. 在热更类中引用UnityEngine和UnityEngine.UI命名空间,并获取创建UI
    这里要注意的是,button的点击事件类型是UnityAction,直接使用ILRuntime会报错(KeyNotFound),需要去ILRuntime中注册UnityAction委托的转换器,具体教程也在上面链接中。
   	public static void StaticFunTest()
        {
            //UnityEngine.Debug.Log("!!! InstanceClass.StaticFunTest()");
            StaticTest();
            var testA = new TestAClass();
            testA.CreatUI();
        }
        
 	public void CreatUI()
        {
            var obj = GameObject.Find("UIManager");
            var containerA = obj.GetComponent();//自定义容器类,存放组件
            var canvnsA = GameObject.Instantiate((GameObject)containerA.Canvns,containerA.transform);
            canvnsA.GetComponent().worldCamera = Camera.main;
            var btn = canvnsA.GetComponentInChildren
  1. 在热更内部使用ref和out
  	public static void StaticFunTest()
        {
           var testA = new TestAClass();
            int a = 5;
            int b;
            testA.RefCheck(ref a, out b);
            Debug.LogFormat("{0}  AND {1}!",a,b);
        }
   public void  RefCheck(ref int A,out int B)
        {
            B = A;
        }

顺带一提,ILRuntime的跨域继承只能支持一个有Unity主工程的类或者接口,但是可以有随便多少个热更DLL中的接口,所以尽可能的减少跨域访问(可能需要自己写委托或者类型的适配器)和继承,以免带来不必要的麻烦。

结论

综合上面结论,理想情况就是所有需要热更的代码(主要是UI和各种游戏系统相关逻辑,表现层东西为主)都封装在一个dll里面,然后给出统一的运行接口由ILRuntime来驱动,调用unity层控件。相关需要的逻辑就在热更dll里面自洽(内部你怎么玩都没大问题)。unity层脚本只作为工具控件类,不要去主动调用热更层。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901362.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号