为我的 Unity 游戏制作一个 moddingAPI 并在没有直接引用的情况下调用函数

Posted

技术标签:

【中文标题】为我的 Unity 游戏制作一个 moddingAPI 并在没有直接引用的情况下调用函数【英文标题】:Making a moddingAPI for my Unity game and call functions without direct references 【发布时间】:2021-11-11 20:19:41 【问题描述】:

我正在尝试为我的 Unity 游戏制作一个 moddingAPI,但我偶然发现了一个我无法真正找到答案的问题。让我解释: 我的 Unity 项目 中有一个特定功能,我们将其命名为 exampleFunction()

using moddingAPI;
  public class exampleClass : MonoBehaviour
  
    public static void exampleFunction()
    
      //stuff
    
  

如果模组开发者想要调用这个函数,我该如何使用我的 moddingAPI 调用它?

我知道模组制作者必须编写如下内容:

using moddingAPI;
  public void callModdingAPI()
  
    moddingAPI.moddingClass.callExampleFunction();
  

moddingAPI 类库将包含以下内容:

using ???????;
public class moddingClass : MonoBehaviour

  public static void callExampleFunction()
  
//how do I get the reference to "exampleClass"?
    exampleClass.exampleFunction();
  

⬆ 这部分是我的问题所在。 我目前正在使用一个全新的类库创建 moddingAPI,没有导入任何内容(.NET Framework,如果它很重要)。 我没有直接引用我的 Unity 游戏中的 exampleClass,所以这段代码不起作用,我不知道如何获得这个引用。我必须导入一些东西吗?我必须建造一些东西吗?我需要做什么?提前致谢。

【问题讨论】:

【参考方案1】:

您需要做的是将此库构建并发布为 .DLL 文件。

假设您将其发布为“ModdingApiLib.dll”。

在你的统一代码中,你必须导入这个 .DLL,然后在你的代码中引用它:

 public static void main()
  
    new ModdingApiLib.ExampleFunction();
  

【讨论】:

但是如何在我的统一项目中获得对exampleFunction() 的引用?我没有这个参考,所以我不能用我的 ModdingApiLib.dll 调用这个函数。我是不是误会了什么?如果是这样,请纠正我。 假设您拥有正确的访问修饰符(公共),.DLL 将保存对您的代码的所有引用 但这是我的问题,我没有这些参考资料。我无法将我的 UnityGame.sln 构建为 .dll 文件,然后将其导入我的 moddingAPILib 并引用我需要的所有内容......再次,如果我误解了任何内容,请纠正我,我开始认为,我完全走错了路,想太多了。 .DLL 文件不应该是游戏,.DLL 文件将是您导入游戏解决方案的 API 库。

以上是关于为我的 Unity 游戏制作一个 moddingAPI 并在没有直接引用的情况下调用函数的主要内容,如果未能解决你的问题,请参考以下文章

FPS 角色全身或手 Unity 3d

如何在 Unity3D 中制作平滑的十字准线?

Unity:使用鼠标位置为我的相机制作角度以围绕对象旋转

需要为我的iOS游戏制作一个DLC“包”系统

有没有办法为我的 Corona SDK 游戏制作自定义图形? [复制]

我如何在 javascript 中为我的游戏制作图像跟随另一个图像