| Main/Config/ConfigManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/Config/Configs/HeroSkinAttrConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/Config/Configs/HeroSkinAttrConfig.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/Config/Configs/HeroSkinConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/FirstCharge/HeroShowLHWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/HeroUI/HeroBestWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/HeroUI/HeroTrainWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/HeroUI/HeroUIManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Main/Config/ConfigManager.cs
@@ -71,6 +71,7 @@ typeof(HeroFatesQualityLVConfig), typeof(HeroLineupHaloConfig), typeof(HeroQualityLVConfig), typeof(HeroSkinAttrConfig), typeof(HorseClassConfig), typeof(HorseSkinConfig), typeof(ItemCompoundConfig), @@ -327,6 +328,8 @@ ClearConfigDictionary<HeroLineupHaloConfig>(); // 清空 HeroQualityLVConfig 字典 ClearConfigDictionary<HeroQualityLVConfig>(); // 清空 HeroSkinAttrConfig 字典 ClearConfigDictionary<HeroSkinAttrConfig>(); // 清空 HorseClassConfig 字典 ClearConfigDictionary<HorseClassConfig>(); // 清空 HorseSkinConfig 字典 Main/Config/Configs/HeroSkinAttrConfig.cs
New file @@ -0,0 +1,134 @@ //-------------------------------------------------------- // [Author]: YYL // [ Date ]: 2026年3月4日 //-------------------------------------------------------- using System.Collections.Generic; using System; using UnityEngine; using LitJson; public partial class HeroSkinAttrConfig : ConfigBase<int, HeroSkinAttrConfig> { static HeroSkinAttrConfig() { // 访问过静态构造函数 visit = true; } public int SkinID; public int NeedItemID; public int StarMax; public int[] WearAttrIDList; public int[] WearAttrValueList; public int[] WearAttrPerStarAddList; public int[] RoleAttrIDList; public int[] RoleAttrValueList; public int[] RoleAttrPerStarAddList; public override int LoadKey(string _key) { int key = GetKey(_key); return key; } public override void LoadConfig(string input) { try { string[] tables = input.Split('\t'); int.TryParse(tables[0],out SkinID); int.TryParse(tables[1],out NeedItemID); int.TryParse(tables[2],out StarMax); if (tables[3].Contains("[")) { WearAttrIDList = JsonMapper.ToObject<int[]>(tables[3]); } else { string[] WearAttrIDListStringArray = tables[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); WearAttrIDList = new int[WearAttrIDListStringArray.Length]; for (int i=0;i<WearAttrIDListStringArray.Length;i++) { int.TryParse(WearAttrIDListStringArray[i],out WearAttrIDList[i]); } } if (tables[4].Contains("[")) { WearAttrValueList = JsonMapper.ToObject<int[]>(tables[4]); } else { string[] WearAttrValueListStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); WearAttrValueList = new int[WearAttrValueListStringArray.Length]; for (int i=0;i<WearAttrValueListStringArray.Length;i++) { int.TryParse(WearAttrValueListStringArray[i],out WearAttrValueList[i]); } } if (tables[5].Contains("[")) { WearAttrPerStarAddList = JsonMapper.ToObject<int[]>(tables[5]); } else { string[] WearAttrPerStarAddListStringArray = tables[5].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); WearAttrPerStarAddList = new int[WearAttrPerStarAddListStringArray.Length]; for (int i=0;i<WearAttrPerStarAddListStringArray.Length;i++) { int.TryParse(WearAttrPerStarAddListStringArray[i],out WearAttrPerStarAddList[i]); } } if (tables[6].Contains("[")) { RoleAttrIDList = JsonMapper.ToObject<int[]>(tables[6]); } else { string[] RoleAttrIDListStringArray = tables[6].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); RoleAttrIDList = new int[RoleAttrIDListStringArray.Length]; for (int i=0;i<RoleAttrIDListStringArray.Length;i++) { int.TryParse(RoleAttrIDListStringArray[i],out RoleAttrIDList[i]); } } if (tables[7].Contains("[")) { RoleAttrValueList = JsonMapper.ToObject<int[]>(tables[7]); } else { string[] RoleAttrValueListStringArray = tables[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); RoleAttrValueList = new int[RoleAttrValueListStringArray.Length]; for (int i=0;i<RoleAttrValueListStringArray.Length;i++) { int.TryParse(RoleAttrValueListStringArray[i],out RoleAttrValueList[i]); } } if (tables[8].Contains("[")) { RoleAttrPerStarAddList = JsonMapper.ToObject<int[]>(tables[8]); } else { string[] RoleAttrPerStarAddListStringArray = tables[8].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); RoleAttrPerStarAddList = new int[RoleAttrPerStarAddListStringArray.Length]; for (int i=0;i<RoleAttrPerStarAddListStringArray.Length;i++) { int.TryParse(RoleAttrPerStarAddListStringArray[i],out RoleAttrPerStarAddList[i]); } } } catch (Exception exception) { Debug.LogError(exception); } } } Main/Config/Configs/HeroSkinAttrConfig.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 19252a3a70e332947a5a71105bfe19a0 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Config/Configs/HeroSkinConfig.cs
@@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: YYL // [ Date ]: 2026年2月13日 // [ Date ]: Wednesday, March 4, 2026 //-------------------------------------------------------- using System.Collections.Generic; @@ -17,10 +17,8 @@ } public int SkinID; public int[] WearAttrIDList; public int[] WearAttrValueList; public int[] AllBatAttrIDList; public int[] AllBatAttrValueList; public string SkinName; public int AudioID; public string Tachie; public float[] TachieParam; public string SquareIcon; @@ -43,71 +41,19 @@ string[] tables = input.Split('\t'); int.TryParse(tables[0],out SkinID); if (tables[1].Contains("[")) { WearAttrIDList = JsonMapper.ToObject<int[]>(tables[1]); } else { string[] WearAttrIDListStringArray = tables[1].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); WearAttrIDList = new int[WearAttrIDListStringArray.Length]; for (int i=0;i<WearAttrIDListStringArray.Length;i++) { int.TryParse(WearAttrIDListStringArray[i],out WearAttrIDList[i]); } } SkinName = tables[1]; if (tables[2].Contains("[")) { WearAttrValueList = JsonMapper.ToObject<int[]>(tables[2]); } else { string[] WearAttrValueListStringArray = tables[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); WearAttrValueList = new int[WearAttrValueListStringArray.Length]; for (int i=0;i<WearAttrValueListStringArray.Length;i++) { int.TryParse(WearAttrValueListStringArray[i],out WearAttrValueList[i]); } } int.TryParse(tables[2],out AudioID); if (tables[3].Contains("[")) { AllBatAttrIDList = JsonMapper.ToObject<int[]>(tables[3]); } else { string[] AllBatAttrIDListStringArray = tables[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); AllBatAttrIDList = new int[AllBatAttrIDListStringArray.Length]; for (int i=0;i<AllBatAttrIDListStringArray.Length;i++) { int.TryParse(AllBatAttrIDListStringArray[i],out AllBatAttrIDList[i]); } } Tachie = tables[3]; if (tables[4].Contains("[")) { AllBatAttrValueList = JsonMapper.ToObject<int[]>(tables[4]); TachieParam = JsonMapper.ToObject<float[]>(tables[4]); } else { string[] AllBatAttrValueListStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); AllBatAttrValueList = new int[AllBatAttrValueListStringArray.Length]; for (int i=0;i<AllBatAttrValueListStringArray.Length;i++) { int.TryParse(AllBatAttrValueListStringArray[i],out AllBatAttrValueList[i]); } } Tachie = tables[5]; if (tables[6].Contains("[")) { TachieParam = JsonMapper.ToObject<float[]>(tables[6]); } else { string[] TachieParamStringArray = tables[6].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] TachieParamStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); TachieParam = new float[TachieParamStringArray.Length]; for (int i=0;i<TachieParamStringArray.Length;i++) { @@ -115,19 +61,19 @@ } } SquareIcon = tables[7]; SquareIcon = tables[5]; RectangleIcon = tables[8]; RectangleIcon = tables[6]; SpineRes = tables[9]; SpineRes = tables[7]; InitialSkinName = tables[10]; InitialSkinName = tables[8]; ApearMotionName = tables[11]; ApearMotionName = tables[9]; TransfMotionName = tables[12]; TransfMotionName = tables[10]; LoopMotionName = tables[13]; LoopMotionName = tables[11]; } catch (Exception exception) { Main/System/FirstCharge/HeroShowLHWin.cs
@@ -57,6 +57,8 @@ roleLHModelTween2.SetStartState(); roleLHModelTween2.Play(); bgTexture.SetTexture2D("countryBG" + hero.Country); HeroUIManager.Instance.PlayerLHSound(hero.SkinIDList[0]); } void RefreshHeroInfo(int heroID) Main/System/HeroUI/HeroBestWin.cs
@@ -140,8 +140,8 @@ jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(heroConfig.Class)); jobPosNameText.text = HeroUIManager.Instance.GetJobName(heroConfig.Class); descText.text = heroConfig.Desc; HeroUIManager.Instance.PlayerLHSound(skinID); RefreshConn(); normalSkillCell.Init(heroConfig.AtkSkillID, () => { @@ -219,6 +219,7 @@ } HeroUIManager.Instance.selectForPreviewHeroID = HeroUIManager.Instance.heroCollectList[resultIndex]; Display(); } Main/System/HeroUI/HeroTrainWin.cs
@@ -236,6 +236,7 @@ addPerObject.SetActive(false); allAttrScroll.verticalNormalizedPosition = 1; Display(); HeroUIManager.Instance.PlayerLHSound(hero.SkinID); } @@ -265,6 +266,7 @@ { bgTexture.SetTexture2D("countryBG" + hero.heroConfig.Country); roleLhModel.Create(hero.SkinID, 1, motionName: "", isLh: true); roleXsModel.Create(hero.SkinID, 1); jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(hero.heroConfig.Class)); jobPosNameText.text = HeroUIManager.Instance.GetJobName(hero.heroConfig.Class); @@ -394,6 +396,8 @@ guid = HeroUIManager.Instance.heroSortList[resultIndex]; hero = HeroManager.Instance.GetHero(guid); Display(); HeroUIManager.Instance.PlayerLHSound(hero.SkinID); } Main/System/HeroUI/HeroUIManager.cs
@@ -259,6 +259,19 @@ return per; } public void PlayerLHSound(int skinID) { if (NewBieCenter.Instance.inGuiding) { return; } var audioID = HeroSkinConfig.Get(skinID).AudioID; if (audioID > 0) { SoundPlayer.Instance.PlayNpcAudio(HeroSkinConfig.Get(skinID).AudioID); } } #endregion