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%。
所以问题是:我的代码中有状态。我想将它们划分为区域,并在某些条件下简单地启用或禁用它们。该代码位于名为 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%。