将统一编辑器脚本编译成 dll 后出现 TypeLoadException

TypeLoadException after compile unity editor script into dll

我已经将我们的编辑器脚本编译成一个 .dll 文件,并将其放在 /Assets/Editor 目录中:

这些扩展脚本菜单在编辑器中正确显示:

但是当我点击菜单时它有这个TypeLoadException。 'Util'类型其实在'UnityVS.x3dgame.CSharp.csproj'项目中,也是库项目

TypeLoadException: Could not load type 'Util' from assembly 'EditorLibrary'.
Scene2DBundleTool.GenerateSceneEffectLuaEditor ()

我不知道如何解决这个问题。

这里有更多信息: 解决方案结构:

EditorLibrary 引用:

需要帮助。

您收到此错误是因为您没有正确构建 dll。如果你想在你自己的dll中包含Unity的API,你必须同时添加对dll的Unity引用,这样你的dll才能使用那些API.

您必须使用基本参考资料,例如 SystemSystem.CoreSystem.Xml

现在,您必须在构建 dll 项目之前将 Unity 的引用添加到您的 dll 项目。要添加的 dll 引用取决于 Unity API 的来源。

独立 API:

  • UnityEngine.dll - 来自 C:\Program Files\Unity\Editor\Data\Managed

编辑器API:

  • UnityEditor.dll - 来自 C:\Program Files\Unity\Editor\Data\Managed

UI:

  • UnityEngine.UI.dll - 来自 C:\Program Files\Unity\Editor\Data\UnityExtensions\Unity\GUISystem

    [编辑器功能]:

  • UnityEditor.UI.dll - 来自 C:\Program Files\Unity\Editor\Data\UnityExtensions\Unity\GUISystem\Editor

最后,确保 select 在您的 dll 项目中使用正确的 .NET 框架,然后再构建它。 .Net Framework 2.0应该没问题。

我们Unity的路径可能不同,但是一旦找到安装它的根路径,其他都是the-same。

备注:

当我说添加引用时,我的意思是添加对您正在构建的库项目的引用,而不是您的 Unity 项目。从 Visual Studio 开始,这可以通过转到 Projects ---> Add Reference... ---> 浏览...(按钮) 然后 select 适当的 dll 文件。