Мой первый совет - не использовать 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)