Unity - frameCount 何时变为负数
Posted
技术标签:
【中文标题】Unity - frameCount 何时变为负数【英文标题】:Unity - When does the frameCount goes negative 【发布时间】:2014-02-05 12:06:51 【问题描述】:我正在学习统一脚本。但我不明白以下内容:
static private var lastRecalculation = -1;
static function RecalculateValue ()
if (lastRecalculation == Time.frameCount)
return;
ProcessData.AndDoSomeCalculations();
我没有得到第三行或 IF 语句中的条件。我知道它有点业余,但请帮忙。 谢谢。
【问题讨论】:
【参考方案1】:这是来自Time.frameCount
documentation。此示例说明如何创建一个每帧仅执行一次的函数,而不管您将脚本附加到多少个对象。我怀疑这个例子是不完整的,因为它永远不会更新 lastRecalculation (或者假设你会在AndDoSomeCalculations()
中这样做)。
最初设置lastRecalculation = -1
的原因是这个函数在第一帧期间运行。
工作版本:
static var lastRecalculation = -1;
static function RecalculateValue ()
if (lastRecalculation == Time.frameCount)
return;
lastRecalculation = Time.frameCount;
Debug.Log (Time.frameCount);
//ProcessData.AndDoSomeCalculations();
function Update ()
RecalculateValue();
将此脚本附加到 2 个不同的 GameObjects
并运行它。您只会看到唯一的帧值 1,2,3,4,5.... 即使 2 个 GameObjects
都在调用 RecalculateValue()
现在注释掉return
并再次运行它。现在,该代码的ProcessData
部分每帧都针对两个对象运行,您会看到类似 1,1,2,2,3,3,4,4......
【讨论】:
感谢@Jerdak 解释得这么好。但我想知道为什么我们要检查 Time.frameCount 是否等于 -1。有没有可能是负面的。 @AshishBeuwria 以一种迂回的方式,这就是我的意思。不,Time.frameCount
永远不会是 -1,所以第一次调用这个函数时,ProcessData.AndDoSomeCalculations();
将被调用。
现在,我明白了!非常感谢。以上是关于Unity - frameCount 何时变为负数的主要内容,如果未能解决你的问题,请参考以下文章