[英]Fade out parallax layer in unity
我在視差圖層上做了淡入淡出的效果,我做到了:
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設備上正常工作...
兒童中最大的spriterenderer數量為20個左右。
好了,有些技巧可能對您有幫助
如果用於每個循環的對象用於集合或對象數組(即除原始數據類型之外的所有元素的數組),則在每個循環的結尾處調用GC(垃圾收集器)以釋放參考變量的空間。
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
}
您可以嘗試合並Gameobjects。 只需激活即可停用它們。
如果一個雲是100%透明的,則可以將其停用並在其他地方重用。 如果您正在移動雲層,那應該是可能的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.