From c44e84122e9edbd24593598964d7547cbf171b9a Mon Sep 17 00:00:00 2001 From: zhangaotian <8474238@qq.com> Date: Tue, 16 Jul 2024 15:58:21 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=89=93=E5=8C=85=E3=80=91=E5=AE=89?= =?UTF-8?q?=E5=8D=93=E6=89=93=E5=8C=85=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scripts/Framework/Manager/BuildManager.cs | 59 +++++++++---------- .../Framework/Manager/EditorTableManager.cs | 2 + 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/Forest/Assets/Scripts/Framework/Manager/BuildManager.cs b/Forest/Assets/Scripts/Framework/Manager/BuildManager.cs index e322834..94612ca 100644 --- a/Forest/Assets/Scripts/Framework/Manager/BuildManager.cs +++ b/Forest/Assets/Scripts/Framework/Manager/BuildManager.cs @@ -1,10 +1,9 @@ using System; using System.Collections.Generic; using System.IO; -using System.Text.RegularExpressions; +using Framework.GameBuild; +using PhxhSDK; using UnityEngine; -using cfg.Build; -using Cysharp.Threading.Tasks; using Sirenix.OdinInspector; using UnityEditor; @@ -64,6 +63,9 @@ namespace Framework.Manager } } + /// + /// 节点信息类 + /// public class NodeInfo { public string Name; @@ -76,6 +78,9 @@ namespace Framework.Manager public string IconPath; } + /// + /// 节点选项类 + /// public class OptionInfo { public int ID; @@ -107,9 +112,10 @@ namespace Framework.Manager } } - public BuildData CurBuildData { get; private set; } - public int CurCondition; + public Dictionary NodeInfos; + + private BuildData _curBuildData; private bool _isInit; private bool _isInGame; @@ -117,7 +123,7 @@ namespace Framework.Manager { if (_isInit) return; NodeInfos = new Dictionary(); - CurBuildData = buildData; + _curBuildData = buildData; foreach (var node in buildData.nodeInfos) { var nodeInfo = new NodeInfo @@ -129,7 +135,7 @@ namespace Framework.Manager foreach (var option in node.options) { - var index = ExtractNumber(option); + var index = GameBuildUtils.ExtractNumber(option); var optionInfo = new OptionInfo() { ID = index, @@ -146,13 +152,16 @@ namespace Framework.Manager _isInit = true; } + /// + /// 初始化条件 + /// private void InitCondition() { - switch (CurBuildData.unlockType) + switch (_curBuildData.unlockType) { case UnlockType.ForGroup: { - foreach (var unlockInfo in CurBuildData.unlockInfos) + foreach (var unlockInfo in _curBuildData.unlockInfos) { var nodeName = string.Format(NodeName, unlockInfo.conditionGroup); if (NodeInfos.TryGetValue(nodeName, out var nodeInfo)) @@ -166,7 +175,7 @@ namespace Framework.Manager } case UnlockType.ForThematic: { - foreach (var unlockInfo in CurBuildData.unlockInfos) + foreach (var unlockInfo in _curBuildData.unlockInfos) { var optionName = string.Format(OptionName, unlockInfo.conditionGroup); foreach (var nodeInfo in NodeInfos.Values) @@ -197,7 +206,7 @@ namespace Framework.Manager { var fileName = Path.GetFileName(filePath); var name = fileName.Replace(".png", ""); - if (ExtractNumber(name) == index) + if (GameBuildUtils.ExtractNumber(name) == index) { var assetPath = filePath.Replace(Application.dataPath, "").Replace('\\', '/'); return assetPath; @@ -207,32 +216,16 @@ namespace Framework.Manager return null; } - private int ExtractNumber(string input) - { - var str = input; - int lastIndex = input.LastIndexOf('_'); - if (lastIndex != -1 && lastIndex < input.Length - 1) - { - str = input.Substring(lastIndex + 1); - } - - Match match = Regex.Match(str, @"\d+"); - - if (match.Success) - { - return int.Parse(match.Value); - } - - return 0; - } - + /// + /// 获得选项Icon图标 + /// public Sprite GetOptionIcon(string nodeName, string optionName) { if (NodeInfos.TryGetValue(nodeName, out var nodeInfo)) { if (nodeInfo.Options.TryGetValue(optionName, out var optionInfo)) { - var sprite = AssetDatabase.LoadAssetAtPath(optionInfo.IconPath); + var sprite = AssetManager.Instance.LoadAsset(optionInfo.IconPath); if (sprite != null) return sprite; } @@ -241,6 +234,10 @@ namespace Framework.Manager return null; } + /// + /// 根据节点获得解锁条件 + /// + /// public int GetCondition(string nodeName) { var condition = 0; diff --git a/Forest/Assets/Scripts/Framework/Manager/EditorTableManager.cs b/Forest/Assets/Scripts/Framework/Manager/EditorTableManager.cs index ed6a6a5..c6c4d5f 100644 --- a/Forest/Assets/Scripts/Framework/Manager/EditorTableManager.cs +++ b/Forest/Assets/Scripts/Framework/Manager/EditorTableManager.cs @@ -5,6 +5,7 @@ using UnityEngine; namespace Framework.Manager { +#if UNITY_EDITOR public class EditorTableManager { private static EditorTableManager _instance; @@ -52,4 +53,5 @@ namespace Framework.Manager return getValue.ValueEn; } } +#endif } \ No newline at end of file