Unity By Reflection Update Scripts
App热更新需求
我正在使用Unity 3D开发一个Android的应用,它会下载AssetBundles并加载它们的内容,但由于AssetBundles不能包含脚本,我将使用预编译的C#脚本,并使用Mono反射来加载它(我不知道我会怎样,但看着办吧) 。但现在我不知道该如何预编译.cs文件,所以有谁都可以帮助我?
思路分析
把你的脚本通过MonoDevelop/VisualStudio编译成.dll,将你script.dll复制到你的unity project的Resource文件夹,把扩展名从xx.dll改成xx.bytes
根据这个手册,我可以包括脚本,bytes(二进制数据),并通过反射加载它们。
我了解所有的步骤,除了:我要怎样编译单个文件得到其字节码?是否有任何教程/帮助?
Solution(解决办法)
1.Open Monodevelop and create C#Library project
2.Add UnityEngine.dll to References
3.Compile your scripts
4.Copy bin/xx.dll from your library project folder to Assets of your unity project and change extension from .dll to .bytes
That's all.
原理分析
把Scripts打包进AssetBundles中,在游戏运行时动态下载Assetbundle,通过Reflection来加载并执行其中的方法。
在Android平台是可行的,但IOS是不可行的,因为Apple不允许这么做。