【发布时间】:2015-01-21 15:49:19
【问题描述】:
我试图在我的 C#.NET 程序中实现 lua 脚本,但是当我执行代码时,其中一种方法没有被执行。
这是课程:
namespace Program1
{
public class LuaFunctions
{
Client Client { get; set; }
private Lua lua { get; set; }
public LuaFunctions(Client c) {
this.Client = c;
this.lua = new Lua();
registerFunctions();
}
public void ExecuteCode(string code)
{
this.lua.DoString(code);
}
private void registerFunctions()
{
lua.RegisterFunction("message", this, this.GetType().GetMethod("Message"));
lua.RegisterFunction("pname", this, this.GetType().GetMethod("playername"));
}
public void Message(string s)
{
System.Windows.Forms.MessageBox.Show(s);
}
public string playername()
{
return Client.Player.Name;
}
}
}
当我执行这行 lua 代码“message(pname)”时,它甚至没有尝试执行方法“playername()”来返回一些值,所以它在 DoString() 行中崩溃,因为“pname”是“返回”为空。
【问题讨论】:
-
如果您尝试调用
pname函数,那么您需要message(pname())。message(pname)将使用pname函数 作为message函数的值。 -
你说得对,我试图创建一些“自定义变量”来使用,比如 $name,所以我可以使用 if($name == "Kyore")那么,你知道怎么可能吗?
-
如果您试图让变量自动更新/等。你必须看看 LuaInterface 是否支持。如果您只想能够设置变量,那么您只需要在调用要使用它的代码之前设置一个全局或本地/环境变量。而不是注册一个函数。
标签: c# .net lua luainterface