c# 根据条件禁用代码区域

c# disable code region on condition

所以问题是:我的代码中有状态。我想将它们划分为区域,并在某些条件下简单地启用或禁用它们。该代码位于名为 LateUpdate 的循环 Unity 函数中。我希望这样做是为了节省处理器时间,而不是使用布尔值或枚举。 我可以这样做吗?如果是这样,如何? 添加。信息:我需要在运行时禁用此功能。该脚本是一个播放 gif 的图像序列播放器。我有一个热身部分,然后是一个循环部分。我可以用布尔值来编写它,但正如我所说,我需要节省处理器时间,因为这将是一款手机游戏。

一些代码:

void LateUpdate ()
{
    if (warmUp)
    {
        currentImageIndex = Mathf.RoundToInt(Time.time * frameRate);
        currentImageIndex = currentImageIndex % spriteSheet.Length;
        spriteRenderer.sprite = spriteSheet[currentImageIndex];
        warmUp = false;
    }
    if (updateEnabled && !warmUp)
    {
        switch (playMode)
        {
            case PlayMode.order:
                currentImageIndex = Mathf.RoundToInt(Time.time * frameRate);
                currentImageIndex = currentImageIndex % spriteSheet.Length;
                spriteRenderer.sprite = spriteSheet[currentImageIndex];
                break;
            case PlayMode.random:
                updateEnabled = false;
                StartCoroutine(RandomizedPlay());
                break;
        } 
    }

}

简单的 if 检查就像您目前正在做的那样是在 运行 时禁用代码的正确方法,它并不总是需要 运行 在函数内。

你应该学习如何使用 the unity profiler on the mobile device,你的减速(如果你有的话)的根源不是你的 if 语句本身。

我想说的是,在探查器期间,这些 if 检查中的每一个都极有可能不会超过 CPU 时间的 0.00%。