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