2014-04-03 3 views
0

나는 내 게임을위한 스크립팅 엔진을 LuaInterface 라이브러리를 사용하여 작성 중이다. 루아에서 클래스를 인스턴스화하려고 시도 할 때 오류가 발생합니다. 오류 :루아에서 C# 클래스 인스턴스화

"./Scripts/sv_worldgen.lua:2: attempt to call global 'Campfire' (a string value)" 
sv_worldgen.lua은 (전체) 인

:

function GenerateChunk(worldChunk, chunkGridPosition) 
    tf = Campfire() 
    tf:SetPosition(chunkGridPosition) 
end 

Campfire는 C#에서 클래스이며 CLRPackage example 당 물론 현재의 LUA에 노출 될 것으로 보인다 LuaInterface Reference. 나는이 오류를 해결할 수없는 것 같아서 검색의주의를 기울였습니다. 내가 관리 할 수있는 스크립트의 유일한 다른 동작은 비슷한 오류를 던지지만, 어디에 "(a table value)"입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 미리 감사드립니다.

Campfire._ctor()을 명시 적으로 시도했지만 _ctor()은 문자열 값입니다.

+0

클래스를 루아에 노출시키는 방법은 무엇입니까? 루아에서 어떻게로드하고 있습니까? –

+0

'LoadScript ("sh_CLRPackage.lua")'그리고 나서 JASG "를 임포트"합니다. 나는 그 질문을 갱신했다. 이것은 이제'캠프 파이어 '가 문자열 값이라는 것을 알려줍니다. – selkathguy

+0

캠프 파이어가 루아에게 어떻게 노출되는지 보여 주어야합니다. 그것 없이는 말하기가 불가능합니다. – Schollii

답변

0

이 문제는 CLRPackage를 사용하여 어셈블리를 처음로드 할 때 해결되었습니다. 다음과

//Lua 
JASG = CLRPackage("JASG", "JASG") 

만 당신은 (이 루아에 액세스하기 전에 수행해야합니다)를 사용하여 실제 C# 클래스에 클래스 명을 연결할 수 있습니다

//Lua 
Campfire=JASG.Campfire; 

을 한 후 정상 인스턴스에 의해 발생할 수 있습니다

//Lua 
cf = Campfire() 
관련 문제