zhaoyang пре 2 година
родитељ
комит
23c7dcae62
1 измењених фајлова са 62 додато и 53 уклоњено
  1. 62 53
      GameClient/Assets/Game/HotUpdate/Data/PhotographUtil.cs

+ 62 - 53
GameClient/Assets/Game/HotUpdate/Data/PhotographUtil.cs

@@ -92,9 +92,9 @@ namespace GFGGame
         {
             int layer = int.MinValue;
             GameObject gameObject = null;
+
             for (int i = 0; i < hit2Ds.Length; i++)
             {
-
                 int gameobjMaxlayer = GetMaxLayer(hit2Ds[i].collider.transform.parent.gameObject);
                 if (gameobjMaxlayer > layer)
                 {
@@ -189,56 +189,32 @@ namespace GFGGame
             }
             int changeLayer = count;
 
-            int maxLayer = int.MinValue;
             SpriteRenderer[] sps = parentObj.GetComponentsInChildren<SpriteRenderer>();//选中道具可能含有静态图
             for (int i = 0; i < sps.Length; i++)
             {
                 int sortingOrder = sps[i].sortingOrder + changeLayer;
                 sps[i].sortingOrder = sortingOrder;
-
-                ParticleSystem[] particles = sps[i].gameObject.GetComponentsInChildren<ParticleSystem>();
-                for (int j = 0; j < particles.Length; j++)//静态图可能是动画
-                {
-                    var renderer = particles[j].GetComponent<Renderer>();
-                    if (renderer != null)
-                    {
-                        renderer.sortingOrder = sortingOrder;
-                    }
-                }
-
-                if (maxLayer < sortingOrder)
-                {
-                    maxLayer = sortingOrder;
-                }
             }
-            Collider2D[] collider = parentObj.GetComponentsInChildren<Collider2D>();//选中道具可能含有静态图
-            for (int i = 0; i < collider.Length; i++)
+
+            ParticleSystem[] particleSystems = parentObj.GetComponentsInChildren<ParticleSystem>();
+            for (int i = 0; i < particleSystems.Length; i++)//选中道具可能含有特效
             {
-                ParticleSystem[] particles = collider[i].gameObject.GetComponentsInChildren<ParticleSystem>();
-                for (int j = 0; j < particles.Length; j++)//静态图可能是动画
+                var renderer = particleSystems[i].GetComponent<Renderer>();
+                if (renderer != null)
                 {
-                    var renderer = particles[j].GetComponent<Renderer>();
-                    if (renderer != null)
-                    {
-                        renderer.sortingOrder = renderer.sortingOrder + changeLayer;
-                        if (maxLayer < renderer.sortingOrder)
-                        {
-                            maxLayer = renderer.sortingOrder;
-                        }
-                    }
+                    renderer.sortingOrder = renderer.sortingOrder + changeLayer;
                 }
             }
-
-
-            for (int i = 0; i < parentObj.transform.childCount; i++)//选中道具可能含有特效
+            MeshRenderer[] meshRenderers = parentObj.GetComponentsInChildren<MeshRenderer>();
+            for (int i = 0; i < meshRenderers.Length; i++)
             {
-                Transform tf = parentObj.transform.GetChild(i);
-                string[] strs = tf.name.Split('_');
-                if (strs.Length > 1 && strs[1].IndexOf("e") >= 0)//子物体是特效
+                var renderer = meshRenderers[i].GetComponent<Renderer>();
+                if (renderer != null)
                 {
-                    DressUpUtil.SetRenderersOrder(tf.gameObject, changeLayer, true);
+                    renderer.sortingOrder = renderer.sortingOrder + changeLayer;
                 }
             }
+
             CubismRenderController[] cubismRenders = parentObj.GetComponentsInChildren<CubismRenderController>();
             for (int i = 0; i < cubismRenders.Length; i++)
             {
@@ -246,10 +222,6 @@ namespace GFGGame
                 if (render != null && render.gameObject.activeSelf == true)
                 {
                     render.SortingOrder = render.SortingOrder + changeLayer;
-                    if (maxLayer < render.SortingOrder)
-                    {
-                        maxLayer = render.SortingOrder;
-                    }
                 }
             }
         }
@@ -258,13 +230,21 @@ namespace GFGGame
             int layer = int.MinValue;
             for (int i = 0; i < parentObj.transform.childCount; i++)
             {
+
                 GameObject gameObject = parentObj.transform.GetChild(i).gameObject;
-                Transform tf = gameObject.transform;
-                SpriteRenderer sp = tf.GetComponent<SpriteRenderer>();
-                if (sp && layer < sp.sortingOrder)
+
+                if (gameObject.activeSelf == false) continue;
+
+                SpriteRenderer[] sprites = gameObject.GetComponentsInChildren<SpriteRenderer>();
+                for (int j = 0; j < sprites.Length; j++)
                 {
-                    layer = sp.sortingOrder;
+
+                    if (sprites[j] != null && layer < sprites[j].sortingOrder)
+                    {
+                        layer = sprites[j].sortingOrder;
+                    }
                 }
+
                 ParticleSystem[] particles = gameObject.GetComponentsInChildren<ParticleSystem>();
                 for (int j = 0; j < particles.Length; j++)
                 {
@@ -274,31 +254,49 @@ namespace GFGGame
                         layer = renderer.sortingOrder;
                     }
                 }
+
+                MeshRenderer[] meshRenderers = gameObject.GetComponentsInChildren<MeshRenderer>();
+                for (int j = 0; j < meshRenderers.Length; j++)
+                {
+                    var renderer = meshRenderers[j].GetComponent<Renderer>();
+                    if (renderer != null && layer < renderer.sortingOrder)
+                    {
+                        layer = renderer.sortingOrder;
+                    }
+                }
+
                 CubismRenderController[] cubismRenders = parentObj.GetComponentsInChildren<CubismRenderController>();
                 for (int j = 0; j < cubismRenders.Length; j++)
                 {
-                    CubismRenderController render = cubismRenders[j];
-                    if (render != null && render.gameObject.activeSelf == true && layer < render.SortingOrder)
+                    CubismRenderController cubism = cubismRenders[j];
+                    if (cubism != null && cubism.gameObject.activeSelf == true && layer < cubism.SortingOrder)
                     {
-                        layer = render.SortingOrder;
+                        layer = cubism.SortingOrder;
                     }
                 }
             }
             return layer;
         }
+
         public int GetMinLayer(GameObject parentObj)
         {
             int layer = int.MaxValue;
             for (int i = 0; i < parentObj.transform.childCount; i++)
             {
                 GameObject gameObject = parentObj.transform.GetChild(i).gameObject;
-                Transform tf = gameObject.transform;
-                if (tf.gameObject.activeSelf == false) continue;
-                SpriteRenderer sp = tf.GetComponent<SpriteRenderer>();
-                if (sp && sp.sortingOrder < layer)
+
+                if (gameObject.activeSelf == false) continue;
+
+                SpriteRenderer[] sprites = gameObject.GetComponentsInChildren<SpriteRenderer>();
+                for (int j = 0; j < sprites.Length; j++)
                 {
-                    layer = sp.sortingOrder;
+
+                    if (sprites[j] != null && sprites[j].sortingOrder < layer)
+                    {
+                        layer = sprites[j].sortingOrder;
+                    }
                 }
+
                 ParticleSystem[] particles = gameObject.GetComponentsInChildren<ParticleSystem>();
                 for (int j = 0; j < particles.Length; j++)
                 {
@@ -308,6 +306,17 @@ namespace GFGGame
                         layer = renderer.sortingOrder;
                     }
                 }
+
+                MeshRenderer[] meshRenderers = gameObject.GetComponentsInChildren<MeshRenderer>();
+                for (int j = 0; j < meshRenderers.Length; j++)
+                {
+                    var renderer = meshRenderers[j].GetComponent<Renderer>();
+                    if (renderer != null && renderer.sortingOrder < layer)
+                    {
+                        layer = renderer.sortingOrder;
+                    }
+                }
+
                 CubismRenderController[] cubismRenders = parentObj.GetComponentsInChildren<CubismRenderController>();
                 for (int j = 0; j < cubismRenders.Length; j++)
                 {