LuaInterface расширяет классы C # - PullRequest
0 голосов
/ 11 октября 2011

Для управления пользовательским интерфейсом в моем игровом движке от 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?

...