From 8d42bc7ab52a3980df2778d2ee7757e60914e6e0 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 24 九月 2025 19:42:45 +0800
Subject: [PATCH] 125 【战斗】战斗系统 战斗封包处理 支持B426拆分FightAction 支持多重嵌套

---
 Main/System/Hero/UIHeroController.cs |   65 ++++++++++++++++++++++++++++++--
 1 files changed, 61 insertions(+), 4 deletions(-)

diff --git a/Main/System/Hero/UIHeroController.cs b/Main/System/Hero/UIHeroController.cs
index 1b11019..852fcef 100644
--- a/Main/System/Hero/UIHeroController.cs
+++ b/Main/System/Hero/UIHeroController.cs
@@ -2,6 +2,7 @@
 using System;
 using Spine.Unity;
 using UnityEngine;
+using UnityEngine.UI;
 
 public class UIHeroController : MonoBehaviour
 {
@@ -13,7 +14,7 @@
 	private GameObject instanceGO;
 
 	private Action onComplete;
-	public void Create(int _skinID, float scale = 1f, Action _onComplete = null, string motionName = "idle", bool isLh = false)
+	public void Create(int _skinID, float scale = 0.8f, Action _onComplete = null, string motionName = "idle", bool isLh = false)
 	{
 		if (skinID == _skinID)
 		{ 
@@ -22,6 +23,52 @@
 		}
 
 		skinID = _skinID;
+		var skinConfig = HeroSkinConfig.Get(skinID);
+		if (isLh)
+		{
+
+			//X杞村亸绉伙紝Y杞村亸绉伙紝缂╂斁锛屾槸鍚︽按骞崇炕杞紙0鍚�1鏄級
+			if (skinConfig.TachieParam.Length == 4)
+			{
+				this.transform.localPosition = new Vector3(skinConfig.TachieParam[0], skinConfig.TachieParam[1], 0);
+				this.transform.localScale = Vector3.one * skinConfig.TachieParam[2];
+				this.transform.localRotation = Quaternion.Euler(0, skinConfig.TachieParam[3] == 0 ? 0 : 180, 0);
+			}
+			else
+			{
+				this.transform.localPosition = Vector3.zero;
+				this.transform.localScale = Vector3.one;
+				this.transform.localRotation = Quaternion.identity;
+			}
+
+			//绔嬬粯鐗规畩澶勭悊锛屾病鏈塻pine鍔ㄧ敾鐨勬敼鐢ㄥ浘鐗�
+			var lhImg = this.AddMissingComponent<RawImage>();
+			if (!skinConfig.Tachie.Contains("SkeletonData"))
+			{
+				//鍥剧墖鏇挎崲
+				lhImg.SetTexture2DPNG(skinConfig.Tachie);
+				lhImg.SetNativeSize();
+				if (skeletonGraphic != null)
+				{ 
+					skeletonGraphic.enabled = false;
+				}
+				lhImg.enabled = true;
+				return;
+			}
+			else
+			{
+				if (skeletonGraphic != null)
+				{ 
+					skeletonGraphic.enabled = true;
+				}
+				lhImg.enabled = false;
+			}
+		}
+		else
+		{ 
+			this.transform.localScale = Vector3.one * scale;
+		}
+
 		onComplete = _onComplete;
 		pool = GameObjectPoolManager.Instance.RequestPool(UILoader.LoadPrefab("UIHero"));
 		
@@ -42,17 +89,27 @@
 		}
 
 		skeletonGraphic = instanceGO.GetComponentInChildren<SkeletonGraphic>(true);
-		var skinConfig = HeroSkinConfig.Get(skinID);
 		if (isLh)
 		{
 			skeletonGraphic.skeletonDataAsset = ResManager.Instance.LoadAsset<SkeletonDataAsset>("Hero/SpineRes/", skinConfig.Tachie);
 		}
 		else
-		{ 
+		{
 			skeletonGraphic.skeletonDataAsset = ResManager.Instance.LoadAsset<SkeletonDataAsset>("Hero/SpineRes/", skinConfig.SpineRes);
 		}
+		if (skeletonGraphic.skeletonDataAsset == null)
+		{
+
+			transform.SetActive(false);
+			if (pool != null)
+				pool.Release(instanceGO);
+			skeletonGraphic = null;
+			Destroy(instanceGO);
+			Debug.LogError("鏈厤缃畇pine");
+			return;
+		}
 		skeletonGraphic.Initialize(true);
-		this.transform.localScale = Vector3.one * scale;
+		
 		spineAnimationState = skeletonGraphic.AnimationState;
 		spineAnimationState.Data.DefaultMix = 0f;
 		if (motionName == "")

--
Gitblit v1.8.0