我在视差层上做了淡入淡出的效果,我做到了:
if(currentBackgroundPhase == BackgroundPhase.Night)
{
foreach(SpriteRenderer sprite in GetComponentsInChildren<SpriteRenderer>())
{
if (sprite.name.Contains("Cloud"))
{
sprite.color = new Color(opaqueCloud.r, opaqueCloud.g, opaqueCloud.b, transitionTimeElapsed / TRANSITION_TIME);
}
}
}
视差不断产生和破坏云精灵,这是我想到的唯一方法。 我看了探查器,并没有发现调用if时性能下降。 是否因为GetComponensInChildren太昂贵/效率低下?如果是这样,还有其他方法吗?
我查看了事件探查器的脚本图形,看是否过多,但没有发现任何奇怪的地方。
我无法在不良设备上进行测试,因为我没有这样的设备,并且我希望它能在每台Android设备上正常工作...
儿童中最多可以有20个左右的spriterenderer。
答案 0 :(得分:1)
有些提示可能对您有帮助
如果用于每个循环的a用于收集对象或对象数组(即除原始数据类型以外的所有元素的数组),则在每个循环a的末尾调用GC(垃圾收集器)以释放参考变量的空间。 / p>
foreach (Gameobject obj in Collection)
{
//Code Do Task
}
其中,for循环用于使用索引对元素进行迭代,因此与非原始数据类型相比,原始数据类型将不会影响性能。
for (int i = 0; i < Collection.length; i++){
//Get reference using index i;
//Code Do Task
}
答案 1 :(得分:0)
您可以尝试合并游戏对象。只需激活即可停用它们。
如果一个云是100%透明的,则可以将其停用并在其他地方重用。如果您要移动云层,应该可以。