我对lua脚本编写起来相当新,但希望将脚本编写到我的游戏引擎中。目前我已经以基本方式链接到c ++,我可以从c ++类调用方法,反之亦然。 Lua脚本被设置为组件,您实际上可以将脚本附加到游戏对象。但是,每次调用脚本时,我都会遇到重置变量的问题。以下是脚本的基本示例:
--lua script--
input = InputManager()
function initalize()
end
function update()
if(input:KeyDown(KEY_SPACE)) then
print("Random before: ", input.random)
input.random = input.random + 10
print("Random after: ", input.random)
end
end
在附加脚本组件时调用Initialize,并且每帧调用update。在这个例子中,在我绑定到lua的c ++ InputManager类中,我有一个初始化为5的整数随机。我使用lunafive属性来控制变量的获取和设置。
当我点击空格时,我希望第一次迭代打印出来:
之前随机:5
随机后:15
然后是下一次迭代:
随机前:15
随机后:25
然而,每次迭代我得到的第一个结果是5和15.我意识到这是因为我在每个更新方法中加载脚本所以它可能只是创建一个新的InputManager实例。
如何创建对象实例(即InputManager)并在每次调用update时维护相同的实例。
这样我可以这样做:
input = nil
function initalize()
input = InputManager()
end
function update()
print(input.random)
end
并且在调用更新后没有未定义的输入实例。希望这一切都有道理,如果不是我可以澄清!非常感谢任何帮助!