在 Lua 检查本地

Checking a local in Lua

我对 Lua 以及一般的编码都很陌生。此代码是运行计时器以检查按键的脚本的一部分。我无法让这部分脚本正常工作。第一部分工作正常 - 它打印消息并将本地设置为 1 - 但是尽管当我按 N 时将本地设置为 1 它总是 returns “没有保存的相机位置可用”消息。我做错了什么?

  local campossaved

--(...other code that doesn't access the local "campossaved"...)

 -- save camera position (hotkey B) --wip
if (isKeyPressed(VK_B)) then
    print("Saved camera position.")
    campossaved = 1
 end


 -- load camera position (hotkey N) --wip
if (isKeyPressed(VK_N)) then
  if (campossaved == 1) then
    print("Loaded camera position.")
    else
      print("No saved camera position available.")
    end
 end

发生这种情况的唯一方法是您不要输入第一个将 1 赋值给 campossaved

的 if 语句

要使其正常工作,isKeyPressed(VK_N)isKeyPressed(VK_B) 都必须 return 为真。所以你可能需要同时按下它们。

你说它是 运行 在定时器循环中。我猜这是一个范围问题,每次 运行 定时器循环时,campossaved 都会重新初始化为 nil,所以按 B 只会将它设置为 1/60 秒,或者然而加快游戏循环 运行 秒。您需要确保 local campossaved 前向声明在您的计时器被调用之前创建

local campossaved

--function timer(delta)

    -- save camera position (hotkey B)
    if isKeyPressed(VK_B) then
        print("Saved camera position.")
        campossaved = true
    end

    -- load camera position (hotkey N)
    if isKeyPressed(VK_N) then
        if campossaved then
            print("Loaded camera position.")
        else
            print("No saved camera position available.")
        end
    end

--end