2011-09-15 6 views
3

나는 VB.net에서 만든 게임에 루아를 연결하려고합니다.VB.net에서 LuaInterface 사용

이제
pLuaVM.RegisterFunction("quit", pPrg.GetType(), pPrgType.GetMethod("quit")) 

, 나는 인스턴스 클래스 내 루아 스크립터, 이러한 클래스의 속성을 변화 것이 가능 방법을 만들 것 : 여기에서 보이는 것처럼 이제 나는 내가 그 자체로 각 기능을 연결할 수 있다는 것을 알고 충분히 읽었습니다 등등.

RegisterFunction은 지저분하고 충분하지 않습니다.

도움 주셔서 감사합니다.

+0

당신이 문서를 읽고 바탕으로

? www.lua.inf.puc-rio.br/luanet/luainterface/luainterface.pdf. 'userdata' 루아 타입에 대해 읽어보십시오. –

답변

1

조언의 첫 번째 부분은 LUAInterface를 사용하지 않는 것입니다. 그것은 크로스 플랫폼이 아니기 때문에, IronPython을 대신 사용할 수 있습니다. IronPython은 LUA로 픽업하기 쉽고 게임 작성 방법에 따라 Windows 및 OSX에서 실행됩니다. XNA와 OpenTK는 그래픽 엔진의 모노에서 크로스 플랫폼을 사용해야합니다.

나는 내 자신의 vb.net 기반 게임에 대해 LUA와 함께 experementing 때 자신을 발견하고 결국 철 python에 결정했다.

하지만 LUA를 고수하겠다고 가정하면; 여기 당신이 시도 할 수있는 무언가가 있습니다. 기록 된 모든 vb.net 코드가 실행 시간 후에는 변경할 수 없습니다 , 당신은 같은 것을 할 수 있습니다 : 루아에서 다음

Public Shared Lua as New LuaInterface 

Sub Game() 
Dim LuaCaller as New LuaAccess 
Lua("LuaAccess") = LuaCaller 
End Sub 

Public Class LuaAccess 
    Public Sub Grant(NewClass as String, Variable as String) 
     Select Case NewClass 
       Case "LuaAccess" 
        Lua(Variable) = New LuaAccess 
    End Sub 
End Class 

:

LuaAccess:Grant("LuaAccess", "MyNewLuaAccess") 
당신이 알고있는 사실을 바탕으로

인스턴스를 생성 할 수 있도록 각 클래스에 새 사례를 추가 할 수 있습니다. 그것을 사용하여 클래스의 새 인스턴스를 만듭니다. 당신은 그런 식으로 변수의 복사본 하나가 바로 잠수함 또는 변수를 만들거나 수업 시간에 모두

Public Shared MyVar as Integer 

공유, 메인 프로그램에서 사용되는 활성 클래스를 수정 할 수 있도록하려면 , 응용 프로그램의 어떤 부분 (루아조차도)이 수정할 수 있습니다.

IronPython은 실제로 LuaInterface와 달리이 종류의 것에 더 적합하며 여전히 적극적으로 개발되고 있습니다.

한 가지를 기억하십시오. 스크립팅에 관해서는 스크립트 엔진을 너무 많이 제어하고 싶지 않습니다. 특히 게임에 있어서는 엔진이 할 수있는 모든 것에 액세스 할 수 있습니다. 그리고 당신이 조심하지 않으면 속일 수 있습니다.

행운을 빈다, 나는 내가 도왔기를 바랍니다. LuaInterface 런타임 2.0.50727 (Lua51.dll를 사용하는 것)