From d0dfe302f42f680bd3a84a29b9d58947046403c7 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 09 二月 2026 14:45:59 +0800
Subject: [PATCH] 125 武将皮肤/技能皮肤 战斗部分

---
 Main/System/Battle/BattleObject/BattleObjectFactory.cs |   54 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 46 insertions(+), 8 deletions(-)

diff --git a/Main/System/Battle/BattleObject/BattleObjectFactory.cs b/Main/System/Battle/BattleObject/BattleObjectFactory.cs
index 58cae7d..6ed52e5 100644
--- a/Main/System/Battle/BattleObject/BattleObjectFactory.cs
+++ b/Main/System/Battle/BattleObject/BattleObjectFactory.cs
@@ -31,11 +31,10 @@
             return null;
         }
 
-        // ===== 绠�鍖栵細鐩存帴浠庣紦瀛樿幏鍙栵紝缂撳瓨鍐呴儴浼氳嚜鍔ㄥ姞杞� =====
-        SkeletonDataAsset skeletonDataAsset = BattleResManager.Instance.GetSpineResource(
+        // ===== 鐩存帴鍔犺浇璧勬簮锛堥潪棰勫姞杞界殑璧勬簮涓嶈蛋缂撳瓨绯荤粺锛�=====
+        SkeletonDataAsset skeletonDataAsset = ResManager.Instance.LoadAsset<SkeletonDataAsset>(
             "Hero/SpineRes/", 
-            skinCfg.SpineRes, 
-            _battleField.guid
+            skinCfg.SpineRes
         );
         
         if (skeletonDataAsset == null)
@@ -43,12 +42,15 @@
             Debug.LogError($"BattleObjectFactory: Failed to load SkeletonDataAsset for {skinCfg.SpineRes}");
             return null;
         }
+
+        Debug.LogError($"{teamHero.SkinID} : {skinCfg.SpineRes}");
+
         // ==============================================
 
         GameObject battleGO = ResManager.Instance.LoadAsset<GameObject>("Hero/SpineRes", "Hero_001"/*skinCfg.SpineRes*/);
 
         GameObject goParent = posNodeList[teamHero.positionNum];
-        BattleObject battleObject = new BattleObject(_battleField);
+        BattleObject battleObject = Produce(teamHero.positionNum, _battleField);
         battleObject.ObjID = teamHero.ObjID;
 
         GameObject realGO = GameObject.Instantiate(battleGO, goParent.transform);
@@ -74,23 +76,59 @@
         realGO.transform.localScale = new Vector3(finalScaleRate, finalScaleRate, finalScaleRate);
         RectTransform rectTrans = realGO.GetComponent<RectTransform>();
         rectTrans.anchoredPosition = Vector2.zero;
-        battleObject.Init(realGO, teamHero, _Camp);
+        
+        // HeroBattleObject 鎵嶆湁 GameObject 鍙傛暟鐨� Init 鏂规硶
+        if (battleObject is HeroBattleObject heroBattleObject)
+        {
+            heroBattleObject.Init(realGO, teamHero, _Camp);
+        }
+        // 鍏朵粬绫诲瀷锛堝MinggeBattleObject锛変笉鍦ㄨ繖閲屽垱寤猴紝鏈夊崟鐙殑鍒涘缓閫昏緫
 
 #if UNITY_EDITOR
         BattleDebug.LogError(
             "鍒濆鍖� 鏈鍔�" +
             (battleObject.Camp == BattleCamp.Red ? "銆愮孩鏂广��" : "銆愯摑鏂广�� ") +
-            $"姝﹀皢: {battleObject.teamHero.name}\n" +
-            $"褰撳墠琛�閲�: {battleObject.teamHero.curHp} -> 鏈�澶ц閲弡battleObject.teamHero.maxHp}\n"
+            $"姝﹀皢: {battleObject.GetName()}\n" +
+            $"褰撳墠琛�閲�: {battleObject.GetCurHp()} -> 鏈�澶ц閲弡battleObject.GetMaxHp()}\n"
         );
 #endif
 
         return battleObject;
     }
 
+    public static BattleObject Produce(int positionNum, BattleField battleField)
+    {
+        if (positionNum >= 0)
+        {
+            return new HeroBattleObject(battleField);
+        }
+        else if (positionNum == 99)
+        {
+            //  鍛芥牸
+            return new MinggeBattleObject(battleField);
+        }
+        // else if (positionNum >= 101)
+        // {
+        //     //  鐏靛吔
+        //     return new SpiritBeastBattleObject(battleField);
+        // }
+        else
+        {
+            return new HeroBattleObject(battleField);
+        }
+    }
+
     public static void DestroyBattleObject(int key, BattleObject battleObj)
     {
         battleObj.Destroy();
         battleObj = null;
     }
+
+    public static BattleObject CreateMinggeBattleObject(BattleField battleField, TeamBase teamBase, BattleCamp camp)
+    {
+        MinggeBattleObject minggeBattleObject = new MinggeBattleObject(battleField);
+        minggeBattleObject.Init(teamBase, teamBase.teamMingge, camp);
+        minggeBattleObject.ObjID = teamBase.teamMingge.ObjID;
+        return minggeBattleObject;
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0