首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将我的统一游戏中的类公开给在运行时由同一游戏加载的DLL?

将我的统一游戏中的类公开给在运行时由同一游戏加载的DLL?
EN

Stack Overflow用户
提问于 2017-02-26 08:27:52
回答 1查看 1.1K关注 0票数 0

我想公开一些对象和类的DLL插件的一个团结5游戏。

插件(DLL/.NET程序集)稍后将在运行时加载。但是这些DLL需要访问主游戏已经创建的类和对象。

我使用Assembly.LoadFrom()方法加载插件DLL:Use assembly class without the assembly object

由于C#中似乎没有像C++那样的任何头文件,我如何向插件公开游戏程序的(.exe)类?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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需要时)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42466338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档