Unity3D的坑系列:动态加载dll
来源:互联网 发布:linux boot分区 编辑:程序博客网 时间:2024/05/29 19:11
我现在参与的项目是做MMO手游,目标平台是Android和iOS,iOS平台不能动态加载dll(什么原因找乔布斯去),可以直接忽略,而在Android平台是可以动态加载dll的,有了这个就可以实现代码更新,不过实际上,在unity里要用上动态加载dll是有很多限制的(不了解的话就是坑)。
限制1:在Android手机里动态加载dll不能使用Assembly.LoadFile(string path),只能使用Assembly.Load(byte[] rawAssembly)这个接口,所以要自己想办法先读出来。
限制2:动态加载的脚本不能在编辑器里挂在prefab上。
限制3:如果脚本在动态dll里,调用AddComponent()挂此脚本上prefab上时不能使用AddComponent(“SomeScript”)的方式调用,要用AddComponent(Type.GetType(“SomeScript”))。
限制4:在动态dll里使用[RequireComponent(typeof(SomeScript))]无效,所以不能使用。
我目前主要就是遇到这些坑,以后有什么新发现再进行补充。
修正&补充:在iOS下不是都不能动态加载dll,越狱的手机可以实现,具体可参考文章:http://blog.csdn.net/lucky_06/article/details/9093879,亲测没问题。
再次修正:iOS实际上还是不能实现真正的代码热更新,使用上述方法只能调用外部dll的接口,但执行逻辑还是在native code里面。简单的说,之前我测试的时候是项目里面有a.dll的代码,然后再Assembly.Load a.dll进来,调用a.dll里面的方法是可以的,但实际是调用了项目里的代码,如果项目里没有a.dll的代码,调用会报错,以上。
- Unity3D的坑系列:动态加载dll
- Unity3D的坑系列:动态加载dll
- Unity3D的坑系列:动态加载dll
- dll的动态加载
- dll动态加载的方式
- 动态加载DLL的测试
- dll动态加载的方式
- dll动态加载的方式
- 动态加载dll的方法
- dll动态加载的方式
- dll动态加载的方式
- dll动态加载的方式
- DLL的动态加载方法
- DLL的静态加载和动态加载
- 动态加载DLL和静态加载DLL的步骤
- 动态加载DLL和静态加载DLL的步骤
- unity3d动态加载声音的方法
- unity3d动态加载声音的方法
- js封装class
- 从C语言到windows程序设计的过渡
- unity开发android游戏(一)搭建Unity安卓开发环境
- VC6 C/CPP操作ORACLE数据库 clilib方案
- canvas标签绘图基础
- Unity3D的坑系列:动态加载dll
- Unity3D入门(一):环境搭建
- MySQL 请选择合适的列!
- java数组的理解
- Linux查看磁盘目录占用大小
- 二叉树 3
- Codevs_P3299 有序数组合并求第K大问题(Treap)
- 哈理工OJ 1305 /POJ 2007 多边形 Scrambled Polygon【计算几何】【极角排序】
- MySQL 基本操作