ILRuntime热更方案坑点

在热更工程中:

1.AddComponent需要限定好类型,不能用Type类型,会报错

2.GetComponent无法获取基类组件类型,无法找到时,需要在MonoBehaviorAdapter中添加遍历获取基类逻辑
3.Hotfix调用Unity中带参数的委托,需要注册委托参 RegisterMethodDelegate
4.强转Action委托类型as报错,使用(Action)XXX的方式去转换
5.尽可能不过多使用特性,反射,容易出问题。
6.继承自MonoBehavior的脚本声明处初始化不起作用,需要在Awake中去初始化
7.ref out关键字谨慎使用,比如传递ref/out 静态变量时,会报错。
8.Json解析必须要使用集成的LitJson库
9.重写父类方法时,不能使用virtual关键字,否则会执行两次,要使用override

10.Awake方法在AddComponent组件时调用一次,不论节点是否显示。此时需要在MonoBehaviorAdapter中加一层判断来规避此情况。

11.协程无法使用字符串启动,只支持参数为IEnumerator类型的方式启动或停止协程
12.ILRuntime不支持proto2,需要换成proto3,同时由于ILRuntime不认为ILRT里面跑的数据类型是枚举,导致无法把默认值转换为枚举,不能使用枚举(比如消息类型)

原文地址:https://www.cnblogs.com/Bright-King/p/11686947.html

时间: 2024-10-14 16:48:12

ILRuntime热更方案坑点的相关文章

xLua热更方案

前言: 一直没有做过Lua相关的商业项目,这次总算有机会得到这个机会,并且对游戏前端用xLua进行了实现. 之前在业余的时间里自己经常练手写一些关于uLua的东西,但真正工作用起来,发现业余玩一玩的练手方式其实还是不够的,需要多实践. 之前所了解的一些热更的方案有LuaJit.uLua.sLua.xLua.L#(C# Light)等,最终我们选了xLua的方案. 原因: 1.据我所知,LuaJit和Lua并不是同一门语言. 2.uLua:据我所知,uLua是当前速度最快的Lua,但它所存在的缺陷

Android 热修复方案分析

绝大部分的APP项目其实都需要一个动态化方案,来应对线上紧急bug修复发新版本的高成本.之前有利用加壳,分拆两个dex结合DexClassLoader实现了一套全量更新的热更方案.实现原理在Android 基于Proxy/Delegate 实现bug热修复这篇博客中有分解.因为这套方案是在Java端实现,并且是全量更新所以兼容性较好,成功率较高.但是在线上跑了几个月之后就碰到了瓶颈,因为随着业务的增长分拆过之后的dex文件方法数也超过65535个,更换拆包方案的话维护成本太高.同时由于没有做差异

移动端热更新方案(iOS+Android)

PPT资源包含iOS+Android 各种方案分析:https://github.com/qiyer/Share/blob/master/%E7%83%AD%E6%9B%B4%E6%96%B0%E5%88%86%E4%BA%ABPPT.pptx 一 .热更新(热修复)产品背景 这里谈到的热更新都是指APP(不包含网页).APP按大类别可以粗略分为 应用 和 游戏.APP的开发周期是极其快速的,在实际开发流程中,我们总会有一些需求迫使我们短时间内快速上线,比如需求流程出错,程序员主观导致的一些bu

lua热更框架之XLua

框架介绍 xLua是当下最流行的unity热更方案之一,作者是腾讯的车雄生前辈,自2016年初推出以来,已经在腾讯的多款游戏项目上应用,目前xLua已经开源到了GitHub.xLua最大的特色是不仅支持纯lua脚本热更,更是可以做 C# 代码的bug hotfix,即平时开发时使用C#,项目上线后,如果突然发现有bug,可以直接用lua去修复出bug的地方,原理就是通过[Hotfix]特性标记然后在IL逻辑层判断修改逻辑,使程序去执行更新后的lua逻辑代码而不是走之前的C#逻辑. 框架优势 与别

各大热补丁方案分析和比较

最近开源界涌现了很多热补丁项目,但从方案上来说,主要包括Dexposed.AndFix.ClassLoader(来源是原QZone,现淘宝的工程师陈钟,在15年年初就已经开始实现)三种.前两个都是阿里巴巴内部的不同团队做的(淘宝和支付宝),后者则来自腾讯的QQ空间团队. 开源界往往一个方案会有好几种实现(比如ClassLoader方案已经有不下三种实现了),但这三种方案的原理却徊然不同,那么让我们来看看它们三者的原理和各自的优缺点吧. Dexposed 基于Xposed的AOP框架,方法级粒度,

百川解码精彩回顾:热修复的坑和阿里的解

热修复是很多开发者关心的技术,8月27日晚,阿里百川组织了"百川解码"在线直播,以"热修复的坑和阿里的解"为主题,邀请了三位业界嘉宾对热修复技术进行了探讨,并介绍了阿里百川全面接受公测的热修复解决方案:阿里百川HotFix,就网友提出的相关问题进行了解答.本文是此次直播的精彩回顾. 嘉宾简介 歩川,阿里巴巴资深开发工程师,<让App像Web一样发布新版本>一文作者,在OPPO从事Android Framework两年,腾讯QQ空间工作一年半,热衷研究安卓

(4.2.32)各大热补丁方案分析和比较

选自: [腾讯bugly干货分享]微信Android热补丁实践演进之路 各大热补丁方案分析和比较 继插件化后,热补丁技术在2015年开始爆发,目前已经是非常热门的Android开发技术.其中比较著名的有淘宝的Dexposed.支付宝的AndFix以及QZone的classloader超级热补丁方案. 为什么需要热补丁 热补丁:让应用能够在无需重新安装的情况实现更新,帮助应用快速建立动态修复能力 从上面的定义来看,热补丁节省Android大量应用市场发布的时间.同时用户也无需重新安装,只要上线就能

实现iOS图片等资源文件的热更新化(五): 一个简单完整的资源热更新页面

简介 一个简单的关于页面,有一个图片,版本号,App名称等,着重演示各个系列的文章完整集成示例. 动机与意义 这是系列文章的最后一篇.今天抽空写下,收下尾.文章本身会在第四篇的基础上,简单扩充下代码,实现在线下载与重置更改的功能. 如果能较为仔细地阅读前四篇文章,第五篇给出的示例,应当是可以理解为无足轻重的.但是,大多数时候,我们更多的可能只是需要一个简易的解决方案,就是那种拿来就可以用的东西,那种我们需要先能看到一个简要的示例来看下效果再解决是否再继续阅读的方案.如此,对于很久以后,由于各种原

Unity官方公布热更新方案性能对比

孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda ?  什么是热更新 ?  为何要热更新 ?  如何在iOS 上对Unity 应用进行热更新 ?  支持Unity iOS 热更新的各种Lua 插件的对比 什么是热更新 ? 广义定义 ? 无需关闭服务器,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码. ? 狭义定义( iOS热更新) ? 无需将代码重新打包提交至AppStore,即可更新客户端的执行代码,即