我想在我的C#.NET程序中实现lua脚本,但是当我执行代码时,其中一个方法没有执行。LuaInterface不调用方法
这里是类:
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代码“消息(PNAME)”,它甚至不尝试执行方法“playername()”返回一定的价值,所以它会在DoString()行中崩溃,因为“pname”是“返回”null。
如果你试图调用'pname'功能,那么你需要'消息(PNAME())'。 'message(pname)'是要使用'pname' *函数*作为'message'函数的值。 – 2014-11-24 01:28:09
你是对的,我试图创建像使用一些“自定义变量”,如$ name,所以我可以使用像,如果($ name ==“Kyore”),那么,你知道怎么样可能做到这一点? – Kyore 2014-11-24 02:03:57
如果您试图让变量自动更新/ etc。你必须看看LuaInterface是否支持这个功能。如果你只是想能够设置变量,那么你只需要在调用想要使用它的代码之前设置全局或本地/环境变量。而不是注册一个函数。 – 2014-11-24 13:32:28