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