1

我有一个使用通用参数的实体组件系统。我正在尝试让 Lua 脚本使用 NLua 工作。

但是我不知道如何从 Lua 环境中访问通用参数。

像这样的东西?:

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

如果没有办法做到这一点,那么我将如何使组件可以通过字符串访问?

将根据要求提供代码片段,因为我认为我的代码没有问题。

4

1 回答 1

3

可以尝试直接调用Generic方法,不带类型参数,NLua会尝试匹配方法名。

if e:HasComponent () then
    ...
end

如果失败,您还可以尝试将泛型方法包装到非泛型扩展方法中。

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

然后你可以从 Lua 调用 HasPositionComponent 作为常规方法

if e:HasPositionComponent () then
    ...
end

看一下 GenericMethod 测试:

https://github.com/NLua/NLua/blob/main/tests/src/LuaTests.cs#L442

于 2015-08-27T13:10:55.787 回答