Эх сурвалжийг харах

添加拍照道具位置设置的等待

leiyasi 1 жил өмнө
parent
commit
989d556fff

+ 15 - 11
GameClient/Assets/Game/HotUpdate/Data/PhotographSceneManager.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Threading.Tasks;
 using UnityEngine;
 using YooAsset;
 
@@ -48,10 +49,10 @@ namespace GFGGame
             AddItemGameObjectToList(bodyParent, false);
         }
 
-        public void AddSceneItem(GameObject parentGameObj, ItemCfg itemCfg, int layer, bool setLayer, bool isOnlyEff = false)
+        public async Task AddSceneItem(GameObject parentGameObj, ItemCfg itemCfg, int layer, bool setLayer, bool isOnlyEff = false)
         {
 
-            AddItemToScene(sceneObject, parentGameObj, itemCfg.id, layer);
+            await AddItemToScene(sceneObject, parentGameObj, itemCfg.id, layer);
 
             string layerName = string.Format("resLayer{0}", layer);
             string value = typeof(ItemCfg).GetField(layerName).GetValue(itemCfg).ToString();
@@ -60,7 +61,7 @@ namespace GFGGame
         }
 
         //拍照场景添加单个道具
-        public async void AddItemToScene(GameObject sceneObj, GameObject parentGameObj, int itemId, int resLayer)
+        public async Task AddItemToScene(GameObject sceneObj, GameObject parentGameObj, int itemId, int resLayer)
         {
             ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
             parentGameObj.transform.SetParent(sceneObj.transform.Find("Scene"), false);
@@ -73,9 +74,9 @@ namespace GFGGame
 
             string resPath = ResPathUtil.GetDressUpAnimationPath(res);
             var handler = DressUpUtil.AddItemAsync(itemId, sceneObj, false, true, parentGameObj, resLayer);
-            if(handler != null)
+            if (handler != null)
             {
-                foreach(var t in handler)
+                foreach (var t in handler)
                 {
                     await t.Task;
                 }
@@ -91,18 +92,20 @@ namespace GFGGame
             }
             else
             {
-                GameObject gameObject = parentGameObj.transform.GetChild(0).gameObject;
-                SetBoxCollider2DToGameObject(gameObject);
+                if (parentGameObj.transform.childCount > 0)
+                {
+                    GameObject gameObject = parentGameObj.transform.GetChild(0).gameObject;
+                    SetBoxCollider2DToGameObject(gameObject);
+                }
             }
-            PhotographUtil.Instance.SetGameObjectCenter(parentGameObj);
+
+            await PhotographUtil.Instance.SetGameObjectCenter(parentGameObj);
         }
 
         //拍照角色
         private void UpdatePhotographBody(GameObject sceneObj, GameObject parentObj)
         {
-
-            PhotographDataManager.Instance.dressUpObj.setSceneObj(sceneObj, false, false, parentObj, false, 
-                () => {  });
+            PhotographDataManager.Instance.dressUpObj.setSceneObj(sceneObj, false, false, parentObj, false);
             PhotographDataManager.Instance.dressUpObj.PutOnDressUpData(MyDressUpHelper.dressUpObj.DressUpDataClone());
             SetRoleBoxCollider(parentObj);
         }
@@ -117,6 +120,7 @@ namespace GFGGame
                     SetBoxCollider2DToGameObject(transform.gameObject);
                 }
             }
+            //await Task.Delay(16);
             PhotographUtil.Instance.SetGameObjectCenter(parentObj);
         }
 

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

@@ -40,7 +40,7 @@ namespace GFGGame
 
 
         //设置物体中心点
-        public async void SetGameObjectCenter(GameObject parentObj)
+        public async Task SetGameObjectCenter(GameObject parentObj)
         {
             await Task.Delay(5);
             Transform parent = parentObj.transform;  // 2.选中技算
@@ -86,7 +86,6 @@ namespace GFGGame
 
             parent.position = bounds.center + parent.position;
 
-
         }
 
 

+ 8 - 6
GameClient/Assets/Game/HotUpdate/Views/DressUp/PhotographView.cs

@@ -16,7 +16,7 @@ namespace GFGGame
         private UI_PhotographUI _ui;
         private GameObject _sceneObject;
 
-        private const int MAX_COUNT = 8;
+        private const int MAX_COUNT = 20;
         private const float MaxScale = 2;
         private const float MinScale = 0.1f;
         // private const string BgResPath = "Bg/BgRes";
@@ -227,16 +227,16 @@ namespace GFGGame
             }
         }
 
-        private void AddSceneItem(ItemCfg itemCfg, bool setLayer)
+        private async void AddSceneItem(ItemCfg itemCfg, bool setLayer)
         {
             Vector3 pos = Vector3.zero;
             if (!string.IsNullOrEmpty(itemCfg.resLayer3))
             {
                 GameObject parentGameObj3 = new GameObject(string.Format("{0}_{1}", itemCfg.id, 3));
-                PhotographSceneManager.Instance.AddSceneItem(parentGameObj3, itemCfg, 3, setLayer);
+                await PhotographSceneManager.Instance.AddSceneItem(parentGameObj3, itemCfg, 3, setLayer);
                 if (setLayer)
                 {
-                    if(parentGameObj3.transform.childCount > 0)
+                    if (parentGameObj3.transform.childCount > 0)
                     {
                         parentGameObj3.transform.localPosition = -parentGameObj3.transform.GetChild(0).localPosition;
                         pos = parentGameObj3.transform.localPosition;
@@ -246,7 +246,7 @@ namespace GFGGame
             if (!string.IsNullOrEmpty(itemCfg.resLayer2))
             {
                 GameObject parentGameObj2 = new GameObject(string.Format("{0}_{1}", itemCfg.id, 2));
-                PhotographSceneManager.Instance.AddSceneItem(parentGameObj2, itemCfg, 2, setLayer);
+                await PhotographSceneManager.Instance.AddSceneItem(parentGameObj2, itemCfg, 2, setLayer);
                 if (setLayer)
                 {
                     if (parentGameObj2.transform.childCount > 0)
@@ -254,13 +254,14 @@ namespace GFGGame
                         parentGameObj2.transform.localPosition = pos == Vector3.zero ? -parentGameObj2.transform.GetChild(0).localPosition : pos;
                         pos = parentGameObj2.transform.localPosition;
                     }
+
                 }
             }
             if (!string.IsNullOrEmpty(itemCfg.resLayer1))
             {
 
                 GameObject parentGameObj1 = new GameObject(string.Format("{0}_{1}", itemCfg.id, 1));
-                PhotographSceneManager.Instance.AddSceneItem(parentGameObj1, itemCfg, 1, setLayer);
+                await PhotographSceneManager.Instance.AddSceneItem(parentGameObj1, itemCfg, 1, setLayer);
 
                 if (setLayer)
                 {
@@ -344,6 +345,7 @@ namespace GFGGame
             ControllerObjectPos();
             ControllerSelectBoxPos();
         }
+
         private void OnTouchUIEnd(EventContext context)
         {
             hitGameObj = null;