Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有硬编码的C#脚本_C#_Lua_Scripting Language - Fatal编程技术网

没有硬编码的C#脚本

没有硬编码的C#脚本,c#,lua,scripting-language,C#,Lua,Scripting Language,我正在尝试用C#编写脚本来创建一个游戏。我之前问过一个类似的问题,但是这个例子指出了.cs文件中包含的硬编码。是否需要编译和运行包含C代码的程序集,该程序集包含可以更改hosting.cs文件中变量的函数、赋值、运算符和类型? 例如: my.cs文件包含字符串变量myName。 我的脚本代码包含函数myfunction。 是否有任何方法可以通过调用myfunction上的Invoke方法从我的函数访问myName并更改其在my.cs文件中的值?如果不在my.cs文件中硬编码myfunction?

我正在尝试用C#编写脚本来创建一个游戏。我之前问过一个类似的问题,但是这个例子指出了.cs文件中包含的硬编码。是否需要编译和运行包含C代码的程序集,该程序集包含可以更改hosting.cs文件中变量的函数、赋值、运算符和类型? 例如:

my.cs文件包含字符串变量myName。
我的脚本代码包含函数myfunction。
是否有任何方法可以通过调用myfunction上的Invoke方法从我的函数访问myName并更改其在my.cs文件中的值?如果不在my.cs文件中硬编码myfunction?

几乎可以做您想要做的事情,并且在您的项目中实现它非常容易

Lua lua = new Lua();
lua.DoString("return 'Hello World!'");
您还可以注册DotNet函数以在脚本文件中使用

lua.RegisterFunction("print", this, typeof(Program).Print("Print"));
之后,您可以在.lua文件中使用它,如下所示:

function Run()
    print("Hello World!")
end
还有一个例子是关于你计划做什么的。假设你有演员班:

class Actor
{
    public string name;
    public int age;
}
这就是我们如何将DotNet内容引入脚本的方式:

Lua lua = new Lua();
lua["actor"] = new Actor();
现在在脚本中:

function Run()
    actor.name = "Thomas"   
    actor.age = 20
end
我在本例中使用了全局变量,所以可以在所有脚本中访问Actor类的实例。这是我们如何将其作为函数参数传递的:

Lua lua = new Lua();
lua.LoadFile("Script.lua");
LuaFunction function = lua["Run"] as LuaFunction;
function.Call(new Actor());

你需要提高你的声誉。谢谢你的好意。你可以把我的帖子标记为对你问题的回答。好的。:)除了在这里说,我不知道该怎么做。所以,虽然我不能安装nlua,但我仍然可以安装luaInterface,还需要进一步研究,但我相信这回答了我的问题,伙计们!Nlua基本上是luaInterface的更新版本,因此我的示例将适用于您。你对Nlua有什么问题?它在说什么?可能与.dll引用有关?我有一个问题,所以也许我可以帮助你。在尝试创建Lua对象时,我无法加载lua52 DllNotFoundException。你可能想更新上一个示例,说“运行”,以遵循前面示例中的主题“一个名为运行作为整个脚本的函数”。