所以问题是:我的代码中有状态。我想将它们划分为区域,并在某些条件下启用或禁用它们。代码位于名为LateUpdate的循环Unity函数中。我希望这样做可以节省处理器时间,而不是使用布尔值或枚举。 我能这样做吗?如果是这样,怎么样? 加。 info:我需要在运行时禁用此功能。该脚本是一个播放GIF的图像序列播放器。我有一个热身部分然后循环部分。我可以用bool写它,但正如我所说,我需要节省处理器时间,因为这将是一个移动游戏。
一些代码:
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;
}
}
}
答案 0 :(得分:0)
您正在进行的简单if
检查是在运行时禁用代码的正确方法,并不总是需要在函数内运行。
您应该学会如何使用the unity profiler on the mobile device,减速的来源(如果您有的话)不是来自您的if
声明本身。
我想说,如果检查中的每一项都很有可能在分析器期间甚至不会超过CPU时间的0.00%。