gpt4 book ai didi

vb.net - 在 VB.net 中使用 LuaInterface

转载 作者:行者123 更新时间:2023-12-03 22:15:10 25 4
gpt4 key购买 nike

我正在尝试将 Lua 连接到我正在制作的 VB.net 游戏。现在,我已经阅读了足够多的内容,知道我可以像这里看到的那样自行连接每个函数:

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

现在,我将如何使我的 Lua 脚本编写者能够实例化类、更改这些类的属性等。

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

谢谢你的帮助!

最佳答案

我的第一条建议是不要使用 LUAInterface;因为它不是跨平台的,而是使用 IronPython,它和 LUA 一样容易上手,并且可以在 Windows 和 OSX 上运行,具体取决于您编写游戏的方式; XNA 和 OpenTK 应该在图形引擎的 mono 下跨平台工作。

我在自己的基于 vb.net 的游戏中使用 LUA 进行实验时发现了这一点,并最终决定使用 Iron 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

然后从Lua:
LuaAccess:Grant("LuaAccess", "MyNewLuaAccess")

您可以为您希望 lua 能够创建实例的每个类添加一个新案例;并使用它来创建类的新实例。
如果您希望它能够修改主程序使用的事件类,只需将类中的子类或变量或两者共享
Public Shared MyVar as Integer

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

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

记住一件事;说到脚本,你真的不想给脚本引擎太多的控制权;特别是在游戏方面,您可以让他们访问您的引擎可以执行的所有操作;如果你不小心,这可以用来作弊。

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

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

关于vb.net - 在 VB.net 中使用 LuaInterface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7428988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com