我正在使用Unity 3D的一个项目。这个项目是一个Android的应用,它会下载AssetBundles并加载它们的内容,但由于AssetBundles不能包含脚本,我将使用预编译的C#脚本,并使用Mono反射来加载它(我不知道我会怎样,但看着办吧) 。但现在我不知道该如何预编译.cs文件,所以任何人都可以帮助我?
答:把你的脚本通过MonoDevelop / VisualStudio编译成.dll,将你script.dll复制到您的统一项目的资产文件夹,将扩展名从.dll文件到.bytes
根据这个手册,我可以包括脚本,二进制数据,并通过反射加载它们。我了解所有的步骤,除了一个:我怎么可以编译脚本来获取二进制数据stroring它的二进制文件。?是否有任何教程/帮助?
UPD: 实际问题都可以重新表述为:“我怎么可以编译单个文件与MonoDevelop的,并得到其字节码”
Solution:
1.Open Monodevelop and create C#Library project
2.Add UnityEngine.dll to References
3.Compile your scripts
4.Copy bin/.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 AppStore不允许这么做。
Unity[C#] Reflection To Update Scripts