Browse Source

临时解决散件动画延迟问题

guodong 3 years ago
parent
commit
2b21959920

+ 12 - 6
GameClient/Assets/Game/HotUpdate/DressUp/DressUpUtil.cs

@@ -1,7 +1,7 @@
 using UnityEngine;
-using System;
 using Live2D.Cubism.Rendering;
 using System.IO;
+using FairyGUI;
 
 namespace GFGGame
 {
@@ -201,14 +201,20 @@ namespace GFGGame
                 GameObject.DestroyImmediate(tf.gameObject);
                 tf = null;
             }
+            string ext = ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType);
+            AddSpriteObj(res, ext, objName, parentObj, sortingOrder, needSetMask);
             if (itemCfg.isAni > 0 && showAni)
             {
+                tf = parentObj.transform.Find(objName);
                 AddAnimationObj(res, objName, parentObj, sortingOrder);
-            }
-            else
-            {
-                string ext = ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType);
-                AddSpriteObj(res, ext, objName, parentObj, sortingOrder, needSetMask);
+                Timers.inst.Add(0.03f, 1, (obj) =>
+                {
+                    if (tf != null && tf.gameObject != null && tf.gameObject.activeInHierarchy)
+                    {
+                        GameObject.DestroyImmediate(tf.gameObject);
+                        tf = null;
+                    }
+                });
             }
 
         }

+ 30 - 16
GameClient/Assets/Game/HotUpdate/Views/CommonGame/GetSuitItemVIew.cs

@@ -14,6 +14,8 @@ namespace GFGGame
         private GoWrapper _wrapper;
         private GameObject _gameObject1;
         private GoWrapper _wrapper1;
+        //正在显示的套装id
+        private int _suitIdShowing;
 
         private int guideId = 0;//0:没有引导 1:首次获得套装2:首次获得套装部件
         public override void Dispose()
@@ -55,6 +57,7 @@ namespace GFGGame
         protected override void OnHide()
         {
             base.OnHide();
+            _suitIdShowing = 0;
             if (_sceneObject != null)
             {
                 GameObject.Destroy(_sceneObject);
@@ -76,6 +79,13 @@ namespace GFGGame
             TryCompleteGuide();
         }
 
+        public override void Refresh()
+        {
+            int itemId = (int)viewData;
+            guideId = 0;
+            UpdateView(itemId);
+        }
+
         private void OnClickBg()
         {
             int itemId = GetSuitItemController.TryShow(0);
@@ -137,23 +147,27 @@ namespace GFGGame
             _ui.m_probar.max = totalCount;
             _ui.m_probar.value = count;
             UpdateItem(itemId);
-            if (_sceneObject != null)
-            {
-                GameObject.Destroy(_sceneObject);
-                _sceneObject = null;
-            }
-            _sceneObject = GameObject.Instantiate(_scenePrefab);
-            int scale = 70;
-            _sceneObject.transform.localScale = new Vector3(scale, scale, scale);
-            SceneController.UpdateRole(itemIds, _sceneObject);
-            if (_wrapper == null)
+            if(_suitIdShowing == 0 || _suitIdShowing != suitId)
             {
-                _wrapper = new GoWrapper(_sceneObject);
-                _ui.m_holder.SetNativeObject(_wrapper);
-            }
-            else
-            {
-                _wrapper.wrapTarget = _sceneObject;
+                if (_sceneObject != null)
+                {
+                    GameObject.Destroy(_sceneObject);
+                    _sceneObject = null;
+                }
+                _sceneObject = GameObject.Instantiate(_scenePrefab);
+                int scale = 70;
+                _sceneObject.transform.localScale = new Vector3(scale, scale, scale);
+                SceneController.UpdateRole(itemIds, _sceneObject);
+                if (_wrapper == null)
+                {
+                    _wrapper = new GoWrapper(_sceneObject);
+                    _ui.m_holder.SetNativeObject(_wrapper);
+                }
+                else
+                {
+                    _wrapper.wrapTarget = _sceneObject;
+                }
+                _suitIdShowing = suitId;
             }
 
         }