2014-07-24 6 views
2

NLua (A LuaInterface fork)을 사용하여 루아 스크립트를 실행할 때 함수를 호출하는 것이 어떻게 가능합니까? 예를 들어NLua (LuaInterface) - 함수 호출

은, 지금 내가 가진 :

lua.LoadFile("C:\\test.lua") 
lua.Call(); 

그러나, 그냥 스크립트를 실행합니다. 스크립트 안에는 사용자 지정 함수가 있습니다. 그 기능 만 실행할 수 있기를 원합니다. 나는 시도했다 :

lua.Call("functionTest") 

그러나 그것은 작동하지 않았다. 어떻게해야합니까? 그것이 불가능하다면,

function functionTest() 
    someMethod() 
end 

또는 - 일 개 루아 파일 내의 다른 스크립트를 포함하는 방법이 있나요 :

내 루아 스크립트과 같이인가? 스크립트와 같이 다른 인수를 사용하여 같은 파일을 실행할 수 있기를 원합니다.

script1 = { 
    -- Code 
} 

script2 = { 
    -- Code 
} 

감사합니다.

답변

2

루아에서 함수를 실행하려면 먼저 함수가 구현 된 스크립트 (청크)를 실행해야합니다. 예를 들어

, 당신은 덩어리가있는 경우 (x.lua)

function MyFunction() 
     print ("MyFunction") 
end function 

당신이 (lua_load를 호출) NLua.Lua.LoadFile를 사용하는 경우 컴파일 된 코드는 스택의 상단에있을 것이다 함수를 "선언"하기 위해 실행해야합니다.

가장 좋은 방법은 DoFile()입니다. DoFile을 사용하면 청크가로드되고 실행되며 이제 함수가 "구현"됩니다.

C#에서 루아 함수를 호출하려면 함수 이름으로 전역 값을 가져와야합니다.

lua.DoFile ("x.lua"); // Now MyFunction is declared 
LuaFunction myFunction = lua ["MyFunction"] as LuaFunction; 
myFunction.Call(); 

참조 :이 당신을 도울 수 NLuaBox Source code

희망.