我想公开一些对象和类的DLL插件的一个团结5游戏。
插件(DLL/.NET程序集)稍后将在运行时加载。但是这些DLL需要访问主游戏已经创建的类和对象。
我使用Assembly.LoadFrom()方法加载插件DLL:Use assembly class without the assembly object
由于C#中似乎没有像C++那样的任何头文件,我如何向插件公开游戏程序的(.exe)类?
发布于 2017-02-26 08:39:44
参考UnityEngine.dll和您的程序集-CSharp.dll
每当团结编辑器编译C#代码时,它通常会生成一个DLL (例如,如果您使用UnityScript,它会生成更多的DLL )--这个DLL名为Assembly-CSharp.dll,它存储在编辑器中的项目文件的Library/ScriptAssemblies文件夹中。
就像任何其他DLL一样,您需要引用它。由于它使用了Unity,所以您也需要引用UnityEngine.dll,例如,可以在c:/Program Files/Unity/Editor/Data/PlaybackEngines/androidplayer/Managed/UnityEngine.dll中找到它
对于大多数平台来说,UnityEngine.dll是相同的(也就是说,上面使用的是被编译成Android构建的平台),所以您使用哪个平台并不太重要,但是,您应该在目标平台上使用这个平台。
不适用的平台
另外,请记住,DLL加载并不适用于各种平台-- iOS和WebGL都是众所周知的例子(因为它们根本不运行.NET IL )。
在构建完成之后
您需要确保在生成之后引用正确的DLL。例如,在Windows独立的情况下,您很容易在构建的*-Data文件夹中找到它。在android上,它也可以从APK中提取出来。
摘要
通常,当您构建游戏时,您需要重新编译您的DLL (引用最新的Assembly-CSharp.dll)。
另外,您还可以将整个代码基预编译成DLL并在项目中使用,但请记住,这会破坏#preprocessor directives,因此您必须在交换平台时重新构建它。但是,至少您可以完全控制DLL何时重新构建(因此,当引用DLL需要时)。
https://stackoverflow.com/questions/42466338
复制相似问题