Browse Source

特效层级

guodong 2 years ago
parent
commit
3b927757b9

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Data/PhotographUtil.cs

@@ -210,7 +210,7 @@ namespace GFGGame
                 string[] strs = tf.name.Split('_');
                 if (strs.Length > 1 && strs[1] == "eff")//子物体是特效
                 {
-                    DressUpUtil.SetParticleSortingOrder(tf.gameObject, changeLayer, true);
+                    DressUpUtil.SetRenderersOrder(tf.gameObject, changeLayer, true);
                 }
             }
             CubismRenderController[] cubismRenders = parentObj.GetComponentsInChildren<CubismRenderController>();

+ 19 - 10
GameClient/Assets/Game/HotUpdate/DressUp/DressUpUtil.cs

@@ -387,7 +387,7 @@ namespace GFGGame
             {
                 render.SortingOrder = sortingOrder;
             }
-            SetParticleSortingOrder(gameObj, sortingOrder);
+            SetRenderersOrder(gameObj, sortingOrder);
             return gameObj;
         }
 
@@ -438,16 +438,9 @@ namespace GFGGame
             var sortingGroup = gameObj.transform.GetComponent<SortingGroup>();
             if (sortingGroup != null)
             {
-                //sortingGroup = gameObj.AddComponent<SortingGroup>();
                 GameObject.Destroy(sortingGroup);
             }
-            var meshRender = gameObj.GetComponent<MeshRenderer>();
-            if(meshRender != null)
-            {
-                meshRender.sortingOrder = sortingOrder + 1;
-            }
-            //sortingGroup.sortingOrder = sortingOrder + 1;//特效层默认高一个层级
-            SetParticleSortingOrder(gameObj, sortingOrder + 1);//特效层默认高一个层级
+            SetRenderersOrder(gameObj, sortingOrder + 1);//特效层默认高一个层级
         }
 
         public static void LoadSpritePos(string res, out float tx, out float ty)
@@ -470,9 +463,25 @@ namespace GFGGame
             ty = 0;
         }
 
-        public static void SetParticleSortingOrder(GameObject gameObj, int sortingOrder, bool isAdd = false)
+        public static void SetRenderersOrder(GameObject gameObj, int sortingOrder, bool isAdd = false)
         {
+            var meshRenderers = gameObj.transform.GetComponentsInChildren<MeshRenderer>();
+            for (int i = 0; i < meshRenderers.Length; i++)
+            {
+                var renderer = meshRenderers[i].GetComponent<Renderer>();
+                if (renderer != null)
+                {
+                    if (isAdd)
+                    {
+                        renderer.sortingOrder = renderer.sortingOrder + sortingOrder;
+                    }
+                    else
+                    {
 
+                        renderer.sortingOrder = sortingOrder;
+                    }
+                }
+            }
             ParticleSystem[] particles = gameObj.transform.GetComponentsInChildren<ParticleSystem>();
             for (int i = 0; i < particles.Length; i++)
             {