簡體   English   中英

在VB.net中使用LuaInterface

[英]Using LuaInterface with VB.net

我正在嘗試將Lua連接到我正在制作的VB.net游戲中。 現在,我已經閱讀了足夠的知識,我可以自己連接每個功能,如下所示:

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

現在,我將如何使我的Lua腳本編寫器實例化類,更改這些類的屬性等。

RegisterFunction看起來很邋and而且還不夠。

謝謝你的幫助!

我的第一條建議是不要使用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能夠創建實例的每個類添加一個新案例; 並使用它來創建類的新實例。 如果您希望它能夠修改主程序使用的活動類,只需在類共享中創建子類或變量或兩者

Public Shared MyVar as Integer

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

雖然我會說實話IronPython確實更適合這種事情,並且仍然在積極開發,與LuaInterface不同。

記住一件事; 當談到腳本時,你真的不想給腳本引擎太多控制權; 當談到游戲時,你可以讓他們訪問你的引擎可以做的一切; 如果你不小心,這可以用來作弊。

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

基於LuaInterface運行時v2.0.50727(使用Lua51.dll的那個)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM