2011-09-15 71 views
3

我正在嘗試將Lua連接到我製作的VB.net遊戲。現在,我讀過不夠了解,我可以通過本身,各線功能像在這裏看到:在VB.net中使用LuaInterface

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

現在,我將如何有可能使我的Lua腳本編寫者實例類,這些類的變化特性等

RegisterFunction只是似乎馬虎,不夠。

感謝您的幫助!

+0

你讀過的文檔? www.lua.inf.puc-rio.br/luanet/luainterface/luainterface.pdf。閱讀有關'userdata' Lua類型的信息 –

回答

1

我的第一條建議是不使用LUAInterface;因爲它不是跨平臺的,而是使用IronPython,它可以像LUA一樣簡單,並且可以在Windows和OSX上運行,具體取決於你如何編寫遊戲; XNA和OpenTK應該在圖形引擎的單聲道下工作。

我在與LUA爲自己的基於vb.net的遊戲進行遊戲時發現了自己,最終決定使用鐵蟒。

但假設你想堅持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 

然後從Lua:

LuaAccess:Grant("LuaAccess", "MyNewLuaAccess") 

你可以爲每個你希望lua能夠創建實例的類添加一個新的case;並用它來創建類的新實例。 如果你希望它能夠修改由主程序使用的活動類,才使潛艇,或變量,或兩者中的類共享

Public Shared MyVar as Integer 

這樣只有一個變量的副本,應用程序的任何部分(甚至Lua)都可以修改。

雖然我會誠實的IronPython確實更適合這種事情,並且仍然在積極開發,不像LuaInterface。

記住一件事;當涉及到腳本時,你真的不希望給腳本引擎太多的控制權;當涉及到遊戲時,你會讓他們訪問引擎可以執行的任何事情;如果你不小心,可以用來作弊。

祝你好運,我希望我的幫助。

基於LuaInterface運行V2.0.50727 (使用Lua51.dll一)