前段时间看了一下unity加载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))]无效,所以不能使用。
这也是文章里提到的遇到的一些坑。
既然有这么坑换dll,我参与的unity项目里也都一致的更换了ulua,lua代码灵活性高,现在又有专门的IDE,可以打断点哦,这tm对于调试脚本语言来说就是一个福利啊,所以更换DLL的做法感觉有点过时了,当然是针对中国市场,我一直以来很看好lua这个语言,无论从我做2d还是3d都用过。
我虽然做游戏年头并不是特别长,但是我觉得针对前端开发者来说,吃透一门强类型语言和一门脚本是必须的,还有针对手游的前端,吃透一个移动平台也是必须的,比如安卓或者ios。