Computercraft 相对于 ticks 的评估和执行
Computercraft Evaluate and Execute relative to ticks
为了编写快速的 turtle 程序,我想知道关于 ticks 的代码是如何执行的?除了乌龟移动的时间之外,执行函数或评估其他 Lua 语句是否有刻度惩罚?换句话说,执行此操作是否需要相同的时间(假设 if 语句的计算结果为 false):
turtle.forward()
if turtle.getFuelLevel() == 0 then turtle.refuel() end
turtle.forward()
这个:
turtle.forward()
if x < 20 then turtle.refuel() end
turtle.forward()
x = x+1
和
turtle.forward()
turtle.forward()
?谢谢
编辑:
根据 Eric 的说法,任何与 Minecraft 接口的东西都需要一个 tick,但原始操作 Lua 不会。换句话说,第一个例子需要 2 个额外的 ticks(除了 multi-tick move),第二个例子需要 1 个额外的 ticks,最后一个没有额外的 ticks。
通常,唯一会触发某种逐笔报价或导致大量停顿以让逐笔报价通过的唯一事情是拉动事件(os.pullEvent,os.pullEventRaw,coroutine.yield) turtle movement does course need a tick to go by, and do call coroutine.yield 暂停脚本并移动。
计算机技术的技术方面的问题是,那些接近 mod 本身并且了解很多的人会更好地回答它们。没有多少经常这样做的人有这种知识。如果你想知道一切,我会在 CC 论坛上问。
为了编写快速的 turtle 程序,我想知道关于 ticks 的代码是如何执行的?除了乌龟移动的时间之外,执行函数或评估其他 Lua 语句是否有刻度惩罚?换句话说,执行此操作是否需要相同的时间(假设 if 语句的计算结果为 false):
turtle.forward()
if turtle.getFuelLevel() == 0 then turtle.refuel() end
turtle.forward()
这个:
turtle.forward()
if x < 20 then turtle.refuel() end
turtle.forward()
x = x+1
和
turtle.forward()
turtle.forward()
?谢谢
编辑:
根据 Eric 的说法,任何与 Minecraft 接口的东西都需要一个 tick,但原始操作 Lua 不会。换句话说,第一个例子需要 2 个额外的 ticks(除了 multi-tick move),第二个例子需要 1 个额外的 ticks,最后一个没有额外的 ticks。
通常,唯一会触发某种逐笔报价或导致大量停顿以让逐笔报价通过的唯一事情是拉动事件(os.pullEvent,os.pullEventRaw,coroutine.yield) turtle movement does course need a tick to go by, and do call coroutine.yield 暂停脚本并移动。
计算机技术的技术方面的问题是,那些接近 mod 本身并且了解很多的人会更好地回答它们。没有多少经常这样做的人有这种知识。如果你想知道一切,我会在 CC 论坛上问。