Lua 中的本地检查

我非常新手,Lua 也是编码方面的。 这段代码是运行计时器以检查键按下的脚本的一部分。 我在这个脚本的这一部分遇到了麻烦。 第一部分很好地工作-它打印消息并将本地设置为1-但是尽管我将本地设置为1,当我按 N 键时,它总是返回“没有可用的保存摄像机位置”消息。 我错在哪里呢?

  local campossaved

--(...其他不访问本地 "campossaved" 的代码...)

 -- 保存相机位置 (热键 B) --制作中
if (isKeyPressed(VK_B)) then
    print("已保存相机位置。")
    campossaved = 1
 end

 -- 加载相机位置 (热键 N) --制作中
if (isKeyPressed(VK_N)) then
  if (campossaved == 1) then
    print("已加载相机位置。")
    else
      print("没有可用的保存摄像机位置。")
    end
 end
点赞
用户2858170
用户2858170

唯一的条件是,您不要进入第一个 if 语句,该语句将把 1 分配给 campossaved

为了使其正常工作,isKeyPressed(VK_N)isKeyPressed(VK_B) 都必须返回 true。所以您可能必须同时按下它们两个。

2021-05-10 15:10:01
用户3342050
用户3342050

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

local campossaved

--function timer(delta)

    -- 保存相机位置(热键B)
    if isKeyPressed(VK_B) then
        print("保存相机位置。")
        campossaved = true
    end

    -- 加载相机位置(热键N)
    if isKeyPressed(VK_N) then
        if campossaved then
            print("加载相机位置。")
        else
            print("没有可用的保存的相机位置。")
        end
    end

--end
2021-05-10 15:17:35