C# NLua: доступ к общим параметрам

У меня есть система компонентов Entity, использующая общие параметры. Я пытаюсь заставить работать скрипты Lua с использованием NLua.

Однако я не знаю, как получить доступ к универсальному параметру из среды Lua.

Что-то вроде этого?:

if e:HasComponent<Position>() then
    print("Found position...")
end

Если нет способа сделать это, то как мне сделать компоненты доступными через строки?

Фрагменты кода будут предоставлены по запросу, так как я не думаю, что это проблема с моим кодом.

1 ответ

Решение

Вы можете попытаться вызвать метод Generic напрямую, без параметра type, NLua попытается сопоставить имя метода.

if e:HasComponent () then
    ...
end

Если это не удастся, вы также можете попытаться обернуть ваш универсальный метод в неуниверсальный метод расширения.

public static HasPositionComponent (this TypeE e)
{
     return e.HasComponent<Position>();
}

Затем вы можете вызвать HasPositionComponent как обычный метод из Lua

if e:HasPositionComponent () then
    ...
end

Взгляните на тест GenericMethod:

https://github.com/NLua/NLua/blob/master/tests/LuaTests.cs#L548

Другие вопросы по тегам