计算机控制台的 Lua 语言延迟更改变量值

嗯,我对 Lua 和 Computercraft 几乎一窍不通,但我非常有创造力。我试图编写代码,使其每秒钟重复打印一个变量。以下是我目前的代码:

display = "正在加载..."
while true do
 sleep(1)
 term.clear()
 term.setCursorPos(1,1)
 print(display)
end
sleep(3)
display = "你好世界"

我想用它来渲染一个 2D 游戏,“display”变量会经常变化,因此我希望每秒钟更新一次它。

当我运行代码时,它确实每秒钟刷新一次,但出于某种原因,我似乎无法在 3 秒后更改“display”变量以进行测试。

我做错了什么?

点赞
用户107090
用户107090

while true 是一个无限循环。脚本永远不会到达 sleep(3)

或许你想用 for i=1,3 来替换 while true

2015-02-10 23:04:47
用户3163075
用户3163075

我对 Lua 没有经验,但这可能是一个解决方案:在 SO 上的答案

在 UI 线程中,运行:

while ((status=lua_resume(L_coroutine, 0)) == LUA_YIELD) {
  semaphore_wait(); /* 无论适当的 C# 调用是什么 */
}

“等待响应”应该类似于:

while not results[my_result] do
  coroutine.yield()
end

“接收到的消息”函数在 Lua 中应该像下面这样:

results[cur_result]=parsed_message
2015-02-11 09:52:46