LiuQilin 7 năm trước cách đây
mục cha
commit
de6625e5fe

+ 24 - 103
Assets/Resource/DragonBones/Unity/src/DragonBones/unity/UnityUGUIDisplay.cs

@@ -1,109 +1,30 @@
-/**
- * The MIT License (MIT)
- *
- * Copyright (c) 2012-2017 DragonBones team and other contributors
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
- * the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-using UnityEngine;
+using UnityEngine;
 using UnityEngine.UI;
 
-    [DisallowMultipleComponent]
-    [ExecuteInEditMode,RequireComponent(typeof(CanvasRenderer), typeof(RectTransform))]
-    public class UnityUGUIDisplay : MaskableGraphic
-    {
-        private Material OriginMaterial;
-
-        public Mesh SharedMesh
-        {
-            get
-            {
-                return sharedMesh;
-            }
-        }
-        public Mesh sharedMesh;
-
-        private Texture _texture;
-        public override Texture mainTexture
-        {
-            get { return _texture == null ? material.mainTexture : _texture; }
-        }
-
-        /// <summary>
-        /// Texture to be used.
-        /// </summary>
-        public Texture texture
-        {
-            get    { return _texture; }
-            set
-            {
-                if (_texture == value)
-                {
-                    return;
-                }
-                
-                _texture = value;
-                SetMaterialDirty();
-            }
-        }
-
-        public void Disable()
-        {
-            material = OriginMaterial;
-            //material.mainTexture = null;
-        }
+public class UnityUGUIDisplay : MonoBehaviour
+{
+    public DragonBoneGraphic dbGraphic;
 
-        public void Enable(MeshFilter meshFilter, MeshRenderer meshRenderer)
-        {
-            if (meshRenderer.sharedMaterial != null)
-            {
-                sharedMesh = meshFilter.sharedMesh;
-            }
-            OriginMaterial = material;
-            material = Lib.DragonboneUGUIMat;
-            if (meshRenderer.sharedMaterial != null)
-            {
-                material.mainTexture = meshRenderer.sharedMaterial.mainTexture;
-                texture = material.mainTexture;
-            }
-        }
-
-        protected override void OnPopulateMesh (VertexHelper vh)
-        {
-            vh.Clear();
-        }
-
-        public override void Rebuild (CanvasUpdate update)
-        {
-            base.Rebuild(update);
-            if (canvasRenderer.cull)
-            {
-                return;
-            }
-
-            if (update == CanvasUpdate.PreRender)
-            {
-                canvasRenderer.SetMesh(SharedMesh);
-            }
-        }
+    public bool raycastTarget
+    {
+        get { return dbGraphic.raycastTarget; }
+        set { dbGraphic.raycastTarget = value; }
+    }
+    
+    public void Disable()
+    {
+        dbGraphic.Disable();
+    }
 
-        void Update()
+    public void Enable(Transform parent, Transform copyTrans, MeshFilter meshFilter, MeshRenderer meshRenderer)
+    {
+        if (dbGraphic == null)
         {
-            canvasRenderer.SetMesh(SharedMesh);
+            GameObject go = new GameObject(copyTrans.name);
+            go.AddComponent<RectTransform>();
+            go.AddComponent<CanvasRenderer>();
+            dbGraphic = go.AddComponent<DragonBoneGraphic>();
         }
-    }
+        dbGraphic.Enable(parent, copyTrans, meshFilter, meshRenderer);
+    }
+}

+ 113 - 0
Assets/Script/Object/DragonBoneGraphic.cs

@@ -0,0 +1,113 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using UnityEngine;
+using UnityEngine.UI;
+
+[DisallowMultipleComponent]
+[ExecuteInEditMode, RequireComponent(typeof(CanvasRenderer), typeof(RectTransform))]
+public class DragonBoneGraphic : MaskableGraphic
+{
+    private Material OriginMaterial;
+
+    public Mesh SharedMesh
+    {
+        get { return sharedMesh; }
+    }
+
+    public Mesh sharedMesh;
+
+    private Texture _texture;
+
+    public override Texture mainTexture
+    {
+        get { return _texture == null ? material.mainTexture : _texture; }
+    }
+
+    private MaskableGraphic maskableGraphic;
+
+    public Transform parent;
+    public Transform copyTrans;
+
+    /// <summary>
+    /// Texture to be used.
+    /// </summary>
+    public Texture texture
+    {
+        get { return _texture; }
+        set
+        {
+            if (_texture == value)
+            {
+                return;
+            }
+
+            _texture = value;
+            SetMaterialDirty();
+        }
+    }
+
+    public void Disable()
+    {
+        DestroyImmediate(gameObject);
+        //material = OriginMaterial;
+    }
+
+    public void Enable(Transform parent, Transform copyTrans, MeshFilter meshFilter, MeshRenderer meshRenderer)
+    {
+        this.parent = parent;
+        this.copyTrans = copyTrans;
+        if (meshRenderer.sharedMaterial != null)
+        {
+            sharedMesh = meshFilter.sharedMesh;
+        }
+        OriginMaterial = material;
+        material = Lib.DragonboneUGUIMat;
+        if (meshRenderer.sharedMaterial != null)
+        {
+            material.mainTexture = meshRenderer.sharedMaterial.mainTexture;
+            texture = material.mainTexture;
+        }
+    }
+
+    protected override void OnPopulateMesh(VertexHelper vh)
+    {
+        vh.Clear();
+    }
+
+    public override void Rebuild(CanvasUpdate update)
+    {
+        base.Rebuild(update);
+        if (canvasRenderer.cull)
+        {
+            return;
+        }
+
+        if (update == CanvasUpdate.PreRender)
+        {
+            canvasRenderer.SetMesh(SharedMesh);
+        }
+    }
+
+    public void Update()
+    {
+        if (copyTrans == null)
+        {
+            DestroyImmediate(gameObject);
+            return;
+        }
+        if (copyTrans.gameObject.activeInHierarchy == false)
+        {
+            gameObject.SetActive(false);
+        }
+        int siblingIndex = transform.GetSiblingIndex();
+        transform.SetParent(copyTrans.parent);
+        transform.localPosition = copyTrans.localPosition;
+        transform.localRotation = copyTrans.localRotation;
+        transform.localScale = copyTrans.localScale;
+        transform.SetParent(parent);
+        transform.SetSiblingIndex(siblingIndex);
+        canvasRenderer.SetMesh(SharedMesh);
+    }
+}

+ 12 - 0
Assets/Script/Object/DragonBoneGraphic.cs.meta

@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 468a5e4373794bf4f84f89c42d086377
+timeCreated: 1522819142
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 31 - 19
Assets/Script/Object/Player.cs

@@ -1385,8 +1385,10 @@ public class Player : Regist , IPointerClickHandler
     }
 
 
+    private List<UnityUGUIDisplay> uguiDisplays;
     public void DisplayInUI(float scale)
     {
+        uguiDisplays = new List<UnityUGUIDisplay>();
         UGUIScale = scale;
         scale *= ResourceManager.Get<Canvas>(CanvasLabel.Canvas).scaleFactor;
         MeshFilter[] meshFilters = UAC.GetComponentsInChildren<MeshFilter>(true);
@@ -1397,8 +1399,9 @@ public class Player : Regist , IPointerClickHandler
             MeshRenderer meshRenderer = meshRenderers[i];
             UnityUGUIDisplay unityUGUIDisplay = meshRenderer.GetComponent<UnityUGUIDisplay>();
             if (unityUGUIDisplay == null) unityUGUIDisplay = meshRenderer.AddComponent<UnityUGUIDisplay>();
-            unityUGUIDisplay.Enable(meshFilter, meshRenderer);
+            unityUGUIDisplay.Enable(UAC.transform, meshRenderer.transform, meshFilter, meshRenderer);
             unityUGUIDisplay.raycastTarget = false;
+            uguiDisplays.Add(unityUGUIDisplay);
             meshRenderer.enabled = false;
             UAC.transform.localScale = new Vector3(scale, scale, 1);
             SetAllCollider(false);
@@ -1613,24 +1616,33 @@ public class Player : Regist , IPointerClickHandler
 
         if (IsDisplayInUGUI)
         {
-            SetSlotAsFirstChild(TopSlot);
-            SetSlotAsFirstChild(DressSlot);
-            SetSlotAsFirstChild(LeftShortSleeveSlot);
-            SetSlotAsFirstChild(RightShortSleeveSlot);
-            LeftLongSleeveUAC.transform.SetAsFirstSibling();
-            RightLongSleeveUAC.transform.SetAsFirstSibling();
-            SetSlotAsFirstChild(EyeSlot);
-            SetSlotAsFirstChild(MouseSlot);
-            SetSlotAsFirstChild(LeftShoeSlot);
-            SetSlotAsFirstChild(RightShoeSlot);
-            SetSlotAsFirstChild(HeadWearSlot);
-            SetSlotAsFirstChild(LeftHandSlot);
-            SetSlotAsFirstChild(RightHandSlot);
-            SetSlotAsFirstChild(HeadSlot);
-            SetSlotAsFirstChild(LeftLegSlot);
-            SetSlotAsFirstChild(RightLegSlot);
-            SetSlotAsFirstChild(NeckSlot);
-            SetSlotAsFirstChild(WingSlot);
+            uguiDisplays.MySort((display1, display0) =>
+                    display1.transform.position.z < display0.transform.position.z);
+
+            foreach (var display in uguiDisplays)
+            {
+                //Debug.Log(display.dbGraphic.copyTrans.name);
+                display.dbGraphic.transform.SetAsLastSibling();
+            }
+
+            //SetSlotAsFirstChild(TopSlot);
+            //SetSlotAsFirstChild(DressSlot);
+            //SetSlotAsFirstChild(LeftShortSleeveSlot);
+            //SetSlotAsFirstChild(RightShortSleeveSlot);
+            //LeftLongSleeveUAC.transform.SetAsFirstSibling();
+            //RightLongSleeveUAC.transform.SetAsFirstSibling();
+            //SetSlotAsFirstChild(EyeSlot);
+            //SetSlotAsFirstChild(MouseSlot);
+            //SetSlotAsFirstChild(LeftShoeSlot);
+            //SetSlotAsFirstChild(RightShoeSlot);
+            //SetSlotAsFirstChild(HeadWearSlot);
+            //SetSlotAsFirstChild(LeftHandSlot);
+            //SetSlotAsFirstChild(RightHandSlot);
+            //SetSlotAsFirstChild(HeadSlot);
+            //SetSlotAsFirstChild(LeftLegSlot);
+            //SetSlotAsFirstChild(RightLegSlot);
+            //SetSlotAsFirstChild(NeckSlot);
+            //SetSlotAsFirstChild(WingSlot);
         }
     }
 

+ 0 - 2
第五期.txt

@@ -1,5 +1,3 @@
-UI_Player头发和脖子的层级
-
 上衣1的Offset
 
 进入搭配秀界面蜜蜂动画会死机