UGUI中粒子特效與UI的遮擋問題


問題背景:

在做主線任務時發現完成任務后的特效顯示穿透上面的UI層,不美觀,策划不樂意了,抓緊解決下

解決思路:

首先講下影響渲染順序的因素:

能夠影響渲染順序的因素有:
1、Camera Depth
     相機組件上設置的相機深度,深度越大越靠后渲染。

2、Sorting Layer
      在Tags & Layers設置中可見

 

3、Order In Layer

      相對於Sorting Layer的子排序,用這個值做比較時只有都在同一層時才有效。
4、RenderQueue
     Shader中對Tags設置的“Queue”。

影響程度:

1、Camera Depth
     永遠最高。Camera Depth小的一定先進渲染管線。

2、當Sorting Layer和Order In Layer相同時
     RenderQueue小的先進渲染管線。

3、當Sorting Layer和Order In Layer不相同時!兩種情況
     1. 當兩個材質使用了不同的RenderQueue,且這兩個RenderQueue都在[0~2500]或[2501~5000]時,SortingLayer和OrderInLayer的排序生效。
     2. 當兩個材質使用了不同的RenderQueue,且這兩個RenderQueue分別在[0~2500]和[2501~5000]時,則一定會按照RenderQueue繪制,無視SortingLayer、OrderInLayer的排序。

在這只說兩種:

1.調節粒子系統Particle System中Order in Layer

這里注意下Sorting Layer和Order in Layer 的區別

在Sorting Layer中可以Add Sorting Layer ,顯示的優先級為從上到下 (不同層)。

在 Order in Layer 中我們可以指定同一層Sorting Layer 的優先級(同一層級)

比如 兩個游戲物體的Sorting Layer同為role層 ,但是第一個游戲物體的Order in Layer 為0,而第二個游戲物體的Order in Layer 為1 ,則第二個游戲物體的顯示優先級高於第一個游戲物體。
不過研究發現,此方式使用2DSprite,通過層級設置,但是Image不行

2.粒子系統的渲染隊列Render Queue

 我在這里采取了這種方式,是這樣,策划的要求是不能動當前粒子特效自身的效果,並且有上層UI時不能穿透

首先不能動當前粒子特效的效果也就意味這,顯示特效時如果調了特效的渲染隊列,就變了特效的效果,第二有上層UI時還不能穿透,我就想那就動態控制下這粒子的渲染隊列吧,這地方也簡單,就是有上層UI時和沒有時切換下狀態就OK了

查看了下美術的粒子效果時shader中的渲染隊列值分別如圖:

並且自己手動調整了下看了下達到策划需求時的渲染隊列值要小於3001即可,其子特效如下:

是3000,而要求是低於2900才可以達到效果。

好不多說,代碼很簡單。

具體代碼:

 1     Coroutine ControlEffectRenderCor;
 2     IEnumerator FindControlEffectRender(int QueueValueOne,int QueueValueTwo)
 3     {
 4         while (ControlEffectRender==null)
 5         {
 6             yield return null;
 7         }
 8       Material[] materArr= ControlEffectRender.GetComponent<ParticleSystem>().GetComponent<Renderer>().materials;
 9         for (int i = 0; i < materArr.Length; i++)
10         {
11             materArr[i].renderQueue = QueueValueOne;
12         }
13         ControlEffectRender.transform.GetChild(0).GetComponent<ParticleSystem>().GetComponent<Renderer>().material.renderQueue = QueueValueTwo;
14     }

就這個簡單的函數實現,

這里ControlEffectRender指的是特效GameObject,這樣就OK了。

 新手上路,很多都是不解原理,達不到對症下葯,只知道這種病症症狀這種葯可緩解,歡迎各位前輩指點提攜

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM