From bc1cb6da854cb2e9144f10ed55330a537ecdca16 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 04 三月 2026 14:35:57 +0800
Subject: [PATCH] 466 h5版本 资源规则修改 打包修改(未完成 勿拉取)

---
 Main/System/PhantasmPavilion/AvatarCell.cs |   44 +++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/Main/System/PhantasmPavilion/AvatarCell.cs b/Main/System/PhantasmPavilion/AvatarCell.cs
index 43edb69..19b8f5f 100644
--- a/Main/System/PhantasmPavilion/AvatarCell.cs
+++ b/Main/System/PhantasmPavilion/AvatarCell.cs
@@ -1,4 +1,5 @@
 using System;
+using Cysharp.Threading.Tasks;
 using UnityEngine;
 using UnityEngine.Events;
 
@@ -148,9 +149,24 @@
     GameObject prefab;
     AvatarModel avatarModel;
     PhantasmPavilionManager manager { get { return PhantasmPavilionManager.Instance; } }
+    bool isLoaded { get { return prefab != null; } }
+    Action onLoaded = null;
+
     private void Awake()
     {
         LoadPrefab();
+    }
+
+    public void SetOnLoaded(Action _onloaded)
+    {
+        if (isLoaded)
+        {
+            _onloaded?.Invoke();
+        }
+        else
+        {
+            onLoaded += _onloaded;
+        }
     }
 
     void OnEnable()
@@ -175,7 +191,7 @@
         }
     }
 
-    protected void LoadPrefab()
+    protected async UniTask LoadPrefab()
     {
         if (prefab != null)
             return;
@@ -186,7 +202,16 @@
             prefab = tmp.gameObject;
             return;
         }
-        prefab = UIUtility.CreateWidget("AvatarCell", "AvatarCell");
+        prefab = await UIUtility.CreateWidget("AvatarCell", "AvatarCell");
+
+        if (this == null)
+        {
+            if (prefab != null)
+            {
+                GameObject.DestroyImmediate(prefab);
+                return;
+            }
+        }
 
         prefab.transform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one);
         prefab.transform.SetAsFirstSibling();
@@ -199,17 +224,26 @@
             prefabRect.anchorMax = new Vector2(0.5f, 0.5f);
             prefabRect.sizeDelta = new Vector2(parentRect.rect.width, parentRect.rect.height);
         }
+
+        onLoaded?.Invoke();
+        onLoaded = null;
+
     }
-    public void InitUI(AvatarModel model)
+    public async void InitUI(AvatarModel model)
     {
         if (model == null)
             return;
         avatarModel = model;
-        LoadPrefab();   //瀛樺湪琚嵏杞界殑鍙兘锛岄噸鏂板姞杞�
+        await LoadPrefab();   //瀛樺湪琚嵏杞界殑鍙兘锛岄噸鏂板姞杞�
+
+        if (this == null)
+        {
+            return;
+        }
 
         int faceID = model.faceID;
         int facePicID = model.facePicID;
-        manager.ShowFace(faceImage, faceSpine, faceUIFrame, faceMask, faceID);
+        manager.ShowFace(faceImage, faceSpine, faceUIFrame, faceMask, faceID).Forget();
 
         string str = AvatarHelper.GetAvatarBgColorStr(faceID);
         faceBGImage.SetSprite(str);

--
Gitblit v1.8.0