如何制作易于修改的 Unity 游戏?

问题描述 投票:0回答:1

我见过许多 Unity 游戏被修改过,但通常使用 Thunderstore 之类的外部工具。这是我希望我的 mod 系统如何工作:

当我的游戏打开时,它会从 Appdata/locallow/myGame/Mods/myMod/ 读取代码文件,而不是像 json 这样的数据文件。该文件中的示例方法:

override void Start()
{
    MyGame.RegisterItem("Example item name", "example_item_name")
}

然后,当我的 Unity 游戏检测到调用此方法时,它会运行一些 Unity 代码。如果可以的话,这可能吗?如果不可能,我能接近多远? 我听说过 CSC 和 Roselyn,但我无法让它们统一工作,尽管我安装了 nuget 包,但 Microsoft.CodeAnalysis.CSharp 无法解析。

提前致谢

c# .net unity-game-engine dll game-development
1个回答
0
投票

您可以使用字典来保存针对字符串标签的函数:link

using System.Collections.Generic;
using System;    

static int Add(int a, int b)
{
    return a + b;
}
static int Sub(int a, int b)
{
    return a - b;
}

Dictionary<String, Func<int,int, int>> methods = new Dictionary<String, Func<int, int, int>>();
int start()
{
   
    Func < int, int, int> addFunc = Add;
    Func < int, int, int> subFunc = Sub;
    methods.Add("ItemOne", addFunc);
    methods.Add("ItemTwo", subFunc);

    if (methods.ContainsKey("ItemOne"))
    {
       int value = methods["ItemOne"](5,10);
       Console.WriteLine(value);
    }

    if (methods.ContainsKey("ItemTwo"))
    {
        int value = methods["ItemTwo"](5, 10);
        Console.WriteLine(value);
    }


    Console.ReadLine();
    return 1;
}


start();

输出:

© www.soinside.com 2019 - 2024. All rights reserved.