在VB.net中使用LuaInterface

时间:2011-09-15 09:52:40

标签: vb.net luainterface

我正在尝试将Lua连接到我正在制作的VB.net游戏中。现在,我已经阅读了足够的知识,我可以自己连接每个功能,如下所示:

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

现在,我如何让我的Lua脚本编写器实例化类,更改这些类的属性等等。

RegisterFunction看起来很草率而且还不够。

感谢您的帮助!

1 个答案:

答案 0 :(得分: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能够创建实例的每个类添加一个新案例;并使用它来创建类的新实例。 如果你希望它能够修改主程序使用的活动类,只需在类共享中创建子类或变量,或者两者都是

Public Shared MyVar as Integer

这样只有一个变量副本,应用程序的任何部分(甚至是Lua)都可以修改。

虽然我老实说IronPython真的更适合这种事情,并且仍然在积极开发,与LuaInterface不同。

记住一件事;当谈到脚本时,你真的不想给脚本引擎太多控制权;当谈到游戏时,你可以让他们访问你的引擎可以做的一切;如果你不小心,这可以用来作弊。

祝你好运,我希望我有所帮助。

基于LuaInterface运行时v2.0.50727 (使用Lua51.dll的那个)