我正在使用Unity,希望用户能够创建自己的程序,这些程序将在正在运行的项目中执行。
我想创建某种在项目中完成工作的API(比如产生一个实体)
exec("whoami");
用户应该能够使用一个将要执行的方法将自己的代码作为.dll文件提交
class Foo
{
void SpawnEntity()
{
//Code to spawn entity
}
}
我想过像
这样的东西class Userclass
{
void MyCode()
{
//Their code would have to use some kind of API to do something in the game
Foo.SpawnEntity();
}
}
在用户提交的.dll文件中,这将导致
namespace APIS
{
class Foo
{
void SpawnEntity()
{
//This method does not contain actual code
}
}
}
我的问题是,我是否可以使用已在游戏代码中编译的方法覆盖方法class Userclass
{
void MyCode()
{
//Their code would have to use some kind of API to do something in the game
APIS.Foo.SpawnEntity();
}
}
,如
APIS.Foo.SpawnEntity()
到目前为止,我只找到了在外部.dll文件中调用方法并获取其返回值的示例,但没有在这些.dll文件中实际覆盖方法的示例来更改调用程序中的内容(在本例中为Unity游戏) 。
这对C#来说是否可行?
提前谢谢
编辑:使用脚本语言
在C#中可能不可能答案 0 :(得分:1)
标准方法:嵌入脚本语言。
有多个插件可用于统一,从Lua到JS的各种语言,甚至是C#(尽管C#很棘手,因为Apple在iOS上禁止使用这种脚本)。
外部脚本语言有几个主要好处: