Unity3D的坑系列:动态加载dll

我现在参与的项目是做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相关推荐

  1. Unity3d实现手动选择动态加载PPT文件并展示

    Unity3d实现手动选择动态加载PPT文件并展示 前言 功能效果 功能实现 定义OpenFileName类 定SelectFileDialog类 选择文件 前言 上一篇文章我讲了Unity3d实现加 ...

  2. 【原】 动态加载dll

    动态调用动态库步骤: 1.创建一个函数指针,其指针数据类型要与调用的DLL引出函数相吻合. 2.通过Win32 API函数LoadLibrary()显式的调用DLL,此函数返回DLL的实例句柄. 3. ...

  3. c# winform程序调用托管dll(c#的dll),使用添加引用和动态加载dll

    1. dll要强名. 2. winform程序要添加引用dll(自动获得dll的函数调用定义),"复制本地"属性设false,因为下一步会动态加载dll,所以"复制本地& ...

  4. VC静态加载DLL和动态加载DLL

    VC静态加载DLL和动态加载DLL 1. 静态加载DLL 如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头 ...

  5. 使用LoadLibrary动态加载DLL并使用其中的类

    转载地址:https://blog.csdn.net/hetoby/article/details/51941921 动态加载DLL并使用其中的函数,是大家经常用到的,那么直接使用LoadLibrar ...

  6. Unity3D的uniSWF插件动态加载SWF UI资源

    uniSWF能把Flash的素材像用AS3编程类似,只不过环境要在C#或者JS中编程.要是想创建一个类似Menu菜单或者像导航一样的菜单,在Unity中首先要选择摄像机,给摄像机添加MovieClip ...

  7. C#根据Debug、Release模式动态加载dll

    //根据Debug.Release状态动态加载dll文件         #if (DEBUG)                 const string dllPathCamera = @" ...

  8. C#动态加载DLL(转)

    利用反射进行动态加载和调用. Assembly ass=Assembly.LoadFrom(DllPath); //利用dll的路径加载 加载dll后,需要使用dll中某类. Type type=as ...

  9. 也说说Silverlight动态加载DLL

    问题 今天手头的项目遇到一个问题,为了描述这个问题,我建立了一个简单的项目,结构如下: 问题是这样的: 1,silverlightApplication1中有一个按钮,点击后弹出窗口:silverli ...

最新文章

  1. 关于扫描仪——你不知道的秘密
  2. linux debain systemd 开机启动 nodejs 兼容原initd启动 forever 开机自启
  3. 实现cookie跨域
  4. 这些超实用的电脑快捷键,你都get到了吗?
  5. 为什么Angular的路由执行离不开router-outlet标签
  6. spring更新后 外层事务查不到_再深一点:面试工作两不误,源码级理解Spring事务...
  7. gif透明背景动画_图片的不同格式:JPG、PNG、GIF都有什么区别?
  8. XStream xml转java对象
  9. 刨根问底--struts-default.xml
  10. Java类权限和类成员权限举例解析
  11. linux系统实现TTS(文字转语音)功能
  12. matlab的colorbar取对数
  13. ICE的Timer和TimerTask
  14. Linux下使用clang-format格式化C++代码
  15. 易语言制作计算软件简单步骤_ps软件制作一寸照,原来如此简单
  16. PowerPoint 幻灯片 PPT 进度条 制作
  17. Linux:chmod命令
  18. 帝国理工学院Stefan Vlask教授招收机器学习方向全奖博士生
  19. 输出华氏 摄氏度转换表
  20. 浅析Statement和PreparedStatement的区别

热门文章

  1. java构建词性词袋_词袋模型
  2. oracle转金额,ORACLE金额转换成英文大写的函数
  3. 基于multisim的fm调制解调_矢量调制分析
  4. 【FPGA】SRIO中的关键问题总结(一)SRIO中的关键数据包格式总结
  5. 这就是那个feature map256 256向量
  6. 综合技术--maven的基本使用
  7. 算法系列之住酒店最少天数问题
  8. UI之UI View--属性及用法
  9. grep如何忽略.svn目录,以及如何忽略多个目录
  10. DD_belatedPNG