From 095955d3a575bc943c67f3b41996fd15481336be Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 17 九月 2025 12:33:57 +0800
Subject: [PATCH] 0312 立绘调整路径 不用图集加载,改单图

---
 Main/Utility/ComponentExtersion.cs   |   12 ++++++
 Main/System/Hero/UIHeroController.cs |   72 ++++++++++++++++++++++++-----------
 Main/ResModule/ResManager.cs         |   19 +++++----
 Main/ResModule/UILoader.cs           |    7 +++
 4 files changed, 78 insertions(+), 32 deletions(-)

diff --git a/Main/ResModule/ResManager.cs b/Main/ResModule/ResManager.cs
index 56bbfb3..a6a580a 100644
--- a/Main/ResModule/ResManager.cs
+++ b/Main/ResModule/ResManager.cs
@@ -5,6 +5,9 @@
 using System.IO;
 using UnityEngine.Video;
 using Spine.Unity;
+using UnityEngine.UI;
+
+
 
 
 
@@ -123,7 +126,7 @@
     }
 #endif
 
-    public T LoadAsset<T> (string directory, string name) where T : UnityEngine.Object
+    public T LoadAsset<T> (string directory, string name, bool needExt = true) where T : UnityEngine.Object
     {
         T asset = null;
         //  鐗规畩澶勭悊 鍥犱负鏈変竴灞傚浘闆嗙殑鍏崇郴 directory瑕佷紶鍏ョ殑搴旇鏄痑tlas鐨勫悕瀛�
@@ -143,14 +146,14 @@
             directory = directory.Replace("\\", "/");
         }
 
-        return LoadAssetInternal<T>(directory, name);
+        return LoadAssetInternal<T>(directory, name, needExt);
     }
 
-    private T LoadAssetInternal<T>(string directory, string name) where T : UnityEngine.Object
+    private T LoadAssetInternal<T>(string directory, string name, bool needExt = true) where T : UnityEngine.Object
     {
         T asset = null;
+        var path = ($"Assets/ResourcesOut/{directory}/{name}" + (needExt ? GetExtension(typeof(T)) : "")).Replace("//", "/").Trim().Replace("\\", "/");
 
-        var path = ($"Assets/ResourcesOut/{directory}/{name}" + GetExtension(typeof(T))).Replace("//", "/").Trim().Replace("\\", "/");
         if (!AssetSource.isUseAssetBundle)
         {
 #if UNITY_EDITOR
@@ -214,7 +217,7 @@
             return LoadAssetInternal<Sprite>(atlasName, spriteName);
     }
 
-    public void LoadAssetAsync<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object
+    public void LoadAssetAsync<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack, bool needExt = true) where T : UnityEngine.Object
     {
         //  鐗规畩澶勭悊 鍥犱负鏈変竴灞傚浘闆嗙殑鍏崇郴 directory瑕佷紶鍏ョ殑搴旇鏄痑tlas鐨勫悕瀛�
         if (typeof(T) == typeof(Sprite))
@@ -223,7 +226,7 @@
             return;
         }
 
-        LoadAssetAsyncInternal<T>(directory, name, callBack);
+        LoadAssetAsyncInternal<T>(directory, name, callBack, needExt);
     }
 
     private void LoadSpriteAsync<T>(string atlasName, string spriteName, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object
@@ -246,9 +249,9 @@
 #endif
     }
 
-    private void LoadAssetAsyncInternal<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object
+    private void LoadAssetAsyncInternal<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack, bool needExt = true) where T : UnityEngine.Object
     {
-        var path = string.Concat($"Assets/ResourcesOut/{directory}/{name}", GetExtension(typeof(T))).Replace("//", "/");
+        var path = string.Concat($"Assets/ResourcesOut/{directory}/{name}", (needExt ? GetExtension(typeof(T)) : "")).Replace("//", "/");
 
         if (!AssetSource.isUseAssetBundle)
         {
diff --git a/Main/ResModule/UILoader.cs b/Main/ResModule/UILoader.cs
index 392f0d4..7e8e0d7 100644
--- a/Main/ResModule/UILoader.cs
+++ b/Main/ResModule/UILoader.cs
@@ -60,7 +60,7 @@
     {
         ResManager.Instance.UnloadAsset(ResourcesPath.UI_FONT_SUFFIX, _fontName);
     }
-    
+
     public static Texture2D LoadTexture2D(string _iconKey)
     {
         var iconConfig = IconConfig.Get(_iconKey);
@@ -70,4 +70,9 @@
         }
         return ResManager.Instance.LoadAsset<Texture2D>(StringUtility.Contact(ResourcesPath.UI_TEXTURE_SUFFIX, "/" + iconConfig.folder), iconConfig.sprite);
     }
+    
+    public static Texture2D LoadTexture2DPNG(string name)
+    {
+        return ResManager.Instance.LoadAsset<Texture2D>(StringUtility.Contact(ResourcesPath.UI_TEXTURE_SUFFIX, "/FullScreenBg"), name + ".png", false);
+    }
 }
diff --git a/Main/System/Hero/UIHeroController.cs b/Main/System/Hero/UIHeroController.cs
index fb01aa1..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
 {
@@ -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,13 +89,12 @@
 		}
 
 		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)
@@ -63,27 +109,7 @@
 			return;
 		}
 		skeletonGraphic.Initialize(true);
-		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;
-			}
-
-		}
-		else
-		{
-			this.transform.localScale = Vector3.one * scale;
-		}
+		
 		spineAnimationState = skeletonGraphic.AnimationState;
 		spineAnimationState.Data.DefaultMix = 0f;
 		if (motionName == "")
diff --git a/Main/Utility/ComponentExtersion.cs b/Main/Utility/ComponentExtersion.cs
index e40a071..34ee978 100644
--- a/Main/Utility/ComponentExtersion.cs
+++ b/Main/Utility/ComponentExtersion.cs
@@ -378,4 +378,16 @@
         var texture = UILoader.LoadTexture2D(_id);
         _image.texture = texture;
     }
+
+
+    public static void SetTexture2DPNG(this RawImage _image, string _id)
+    {
+        if (_image == null)
+        {
+            return;
+        }
+
+        var texture = UILoader.LoadTexture2DPNG(_id);
+        _image.texture = texture;
+    }
 }

--
Gitblit v1.8.0