Unity - frameCount何时变为负数

时间:2014-01-16 14:16:20

标签: unity3d unityscript

我正在学习统一脚本。但我不明白以下几点:

static private var lastRecalculation = -1;
    static function RecalculateValue () {
       if (lastRecalculation == Time.frameCount)
         return;
       ProcessData.AndDoSomeCalculations();
    }

我没有得到IF语句中的第三行或条件。我知道它有点业余,但请帮助。 谢谢。

1 个答案:

答案 0 :(得分:2)

这来自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 ....的唯一帧值,即使每个GameObjects都调用RecalculateValue()

现在注释掉return并再次运行它。现在,该代码的ProcessData部分每帧都运行两个对象,你会看到类似1,1,2,2,3,3,4,4 ......