我正在嘗試將Lua連接到我製作的VB.net遊戲。現在,我讀過不夠了解,我可以通過本身,各線功能像在這裏看到:在VB.net中使用LuaInterface
pLuaVM.RegisterFunction("quit", pPrg.GetType(), pPrgType.GetMethod("quit"))
現在,我將如何有可能使我的Lua腳本編寫者實例類,這些類的變化特性等
RegisterFunction只是似乎馬虎,不夠。
感謝您的幫助!
我正在嘗試將Lua連接到我製作的VB.net遊戲。現在,我讀過不夠了解,我可以通過本身,各線功能像在這裏看到:在VB.net中使用LuaInterface
pLuaVM.RegisterFunction("quit", pPrg.GetType(), pPrgType.GetMethod("quit"))
現在,我將如何有可能使我的Lua腳本編寫者實例類,這些類的變化特性等
RegisterFunction只是似乎馬虎,不夠。
感謝您的幫助!
我的第一條建議是不使用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一)
你讀過的文檔? www.lua.inf.puc-rio.br/luanet/luainterface/luainterface.pdf。閱讀有關'userdata' Lua類型的信息 –