Для управления пользовательским интерфейсом в моем игровом движке от 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, которые вызываются при необходимости, возвращая возвращаемое значение.
Единственная проблема в этом подходеЛуа считает, что метод не был выполнен должным образом.
Теперь я хотел бы спросить, что, по вашему мнению, я должен сделать в отношении расширения существующих элементов управления.Это правильный путь, или я должен использовать совершенно другой подход?
И если это правильный путь, как я могу добавить функции в существующий класс C #, используя Lua?