2015-07-19 55 views
0

我有一個使用泛型參數的實體組件系統。我試圖讓Lua腳本使用NLua工作。C#NLua:訪問通用參數

但是我不知道如何從Lua環境中訪問一個通用參數。

像這樣的事情?:

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

如果沒有辦法做到這一點,那麼我會如何去使組件通過串訪問?

代碼片斷將根據要求提供,因爲我認爲這不是我的代碼的問題。

回答

2

您可以嘗試直接調用泛型方法,而不使用類型參數,NLua會嘗試匹配方法名稱。

if e:HasComponent() then 
    ... 
end 

如果失敗,也可以嘗試將泛型方法封裝到非泛型擴展方法中。

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

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

然後你可以從Lua

if e:HasPositionComponent() then 
    ... 
end 

看看在GenericMethod測試呼叫HasPositionComponent作爲常規方法