为了从Lua控制我的游戏引擎中的用户界面,我创建了这样的方法:
local panel = gui:Create("panel");
这将创建一个面板的新实例并将其传递回Lua。这很好用,但我希望能够在lua中创建新的控件,基于在C#中创建的控件。 这看起来像这样:
function createCustomPanel()
local panel = gui:Create("panel");
function panel:DoCustomStuff()
// Custom stuff here
end;
return panel;
end;
我可以添加一个方法来调用这些自定义控件,就像我创建任何其他控件一样:
gui:DefineControl("custompanel", createCustomPanel);
唯一的问题是,用C#编写的控件不能用额外的函数扩展。
我正在使用LuaInterface将C#和lua绑定在一起,我已经下载了源代码,试试看是否可以添加此功能。在大多数情况下,这是可能的,通过使用扩展DynamicObject类并包含LuaFunctions列表的自定义对象,在需要时调用它们,并传回返回值。
该方法的唯一问题是,Lua认为该方法没有正确执行。
现在我想问一下你认为我应该做些什么来扩展现有的控制措施。这是正确的道路,还是我应该采取一种完全不同的方法?
如果这是正确的方法,我怎么能使用Lua将功能添加到现有的C#类?