【问题标题】:TypeLoadException after compile unity editor script into dll将统一编辑器脚本编译为 dll 后的 TypeLoadException
【发布时间】:2020-07-24 15:27:52
【问题描述】:

我已将我们的编辑器脚本编译成一个 .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 时,您应该在构建库之前添加对库的引用。如果你已经这样做了,你应该留下评论让我知道,否则我不可能知道。

标签: c# unity3d unity-editor


【解决方案1】:

您收到此错误是因为您没有正确构建 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

用户界面

  • 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

最后,确保在构建之前在您的 dll 项目中选择正确的 .NET 框架。 .Net Framework 2.0 应该没问题。

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

注意:

当我说添加引用时,我的意思是添加对您正在构建的库项目的引用,而不是对您的 Unity 项目的引用。在 Visual Studio 中,这可以通过转到 Projects ---> Add Reference... ---> Browse...(Button) 然后选择合适的 dll 文件。

【讨论】:

  • 经过更多检查,我发现“UnityVS.x3dgame.CSharp”项目中的一些代码实际上没有编译到dll中。 dll中实际上不存在“Util”和“Singleton”类。不过还是谢谢。
猜你喜欢
  • 2012-07-28
  • 2011-06-14
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多