【问题标题】:Can't load Mono.CSharp.dll in either Unity3D or a C# project无法在 Unity3D 或 C# 项目中加载 Mono.CSharp.dll
【发布时间】:2018-02-26 19:28:02
【问题描述】:

我正在开发一个使用 Unity3D 客户端和 C# 服务器的在线视频游戏项目。 我正在尝试对特定功能使用一些代码评估,但我无法让它工作。

我选择了 Mono,因为它似乎是最轻和最简单的一种。我安装了 Mono 并从“Mono\lib\mono\4.6-api”获得了 .Net 4.6 的“Mono.CSharp.dll”。 (Unity 和我的服务器都配置为使用此版本的 .Net)。我将它放在 Unity 资产中,并在我的服务器上引用它。

但我在 Unity 和服务器上都有错误。在 Unity 中有:

Loading script assembly "Assets/Scripts/Common/References/Mono.CSharp.dll" failed!

服务器上有一个例外(我的 IDE 是法语的,所以我不能真正复制/粘贴它),但它基本上告诉我它不能使用参考程序集进行构建,而只能用于反射。

为了描述我想要创建的功能(因为您可能会有更好的解决方案),我希望能够从外部工具创建法术。法术是由法术效果组成的。假设有一个名为 DealDamage 的 SpellEffect,构造函数接受一个 int(用于伤害量)。我希望能够在我的外部工具上编写“DealDamage(50)”,然后获取字符串,并从中构建一个新的 DealDamage(50)。

我知道我可以自己找到一种方法来解释一些代码,但对于一个不太灵活的系统来说,这将是更多的工作。

在网上很难找到任何关于这个问题的帮助,所以作为最后的希望,我求助于你。

【问题讨论】:

    标签: c# unity3d mono evaluation


    【解决方案1】:

    我不确定您为什么要尝试将 Mono 导入 Unity。它已经包含在安装包中。如果您想制作一个模块化拼写生成器,只需在您首选的 IDE 中使用您喜欢的语言创建一个常规应用程序,并将所有拼写保存为 JSON 或 XML 文件,然后将它们导入 Unity。在 Unity 方面,只需构建一个类来解析文件。

    要开始使用,请查看 JSON.Net 库。您可以使用它将文件序列化为 C# 类。

    【讨论】:

    • 我不认为代码评估器已经包含在内,或者我错过了什么?我们已经选择将 protobuf 用于游戏数据,但我不知道可以将 JSON 读入 C# 类,这很有趣!
    • 代码评估器是什么意思? Mono.Csharp.dll 是 Mono 的主要 Csharp 程序集,它包含在 Unity 中。当您说“代码评估器”时,我会想到 Resharper 之类的东西。
    • 我的意思是......我不知道,当我“使用 Mono.CSharp;”时,Unity 找不到参考,我也不能使用 Mono 的评估器。当我这么说时,我的意思是让我们运行一些存储在字符串中的代码的功能。
    • 对 Mono 的引用深埋于核心引擎本身。但无论如何,你都在努力做到这一点。您不需要从字符串运行代码,您只需要读取和解析值并通过引擎运行您的逻辑。构建您的拼写构建应用程序以编写 JSON 或 XML 文件并将它们导入 Unity。一旦它们在那里,您可以反序列化回一个类并在其上运行您的逻辑。试图将字符串化的代码解析回可编译的代码会比它的价值更麻烦。
    • 似乎代码评估在某些平台上不起作用,所以我无论如何也无法使用它。感谢您的帮助和您的时间,我将尝试了解 JSON 和 XML 反序列化到类中。
    猜你喜欢
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    相关资源
    最近更新 更多