diff --git a/Assets/Editor/Inspector/SpriteGroupEditor.cs b/Assets/Editor/Inspector/SpriteGroupEditor.cs index 497079280..98db8ea28 100644 --- a/Assets/Editor/Inspector/SpriteGroupEditor.cs +++ b/Assets/Editor/Inspector/SpriteGroupEditor.cs @@ -30,6 +30,7 @@ namespace AibisDream.SystemEditor ReorderLayer(example); // 重排序 EditorGUILayout.Separator(); SaveUIPart(example); // 保存 + #endregion } @@ -167,6 +168,11 @@ namespace AibisDream.SystemEditor { example.SaveSpriteGroup(); } + + if (GUILayout.Button("刷新")) + { + Repaint(); + } } private void ReLoad() diff --git a/Assets/Scripts/Framework/OtherKit/SpriteGroupKit.cs b/Assets/Scripts/Framework/OtherKit/SpriteGroupKit.cs index 091c5e289..8ab37f615 100644 --- a/Assets/Scripts/Framework/OtherKit/SpriteGroupKit.cs +++ b/Assets/Scripts/Framework/OtherKit/SpriteGroupKit.cs @@ -22,6 +22,31 @@ namespace AibisDream.Framework #endregion + private Dictionary RendererDict + { + get + { + if (_rendererDict is not { Count: > 0 }) + { + if (transform.GetChild(0)) + { + var rendererArray = transform.GetChild(0).GetComponentsInChildren(true); + _rendererDict = new Dictionary(); + foreach (var rendererItem in rendererArray) + { + _rendererDict[rendererItem.gameObject.name] = rendererItem; + } + } + else + { + _rendererDict = new Dictionary(); + } + } + + return _rendererDict; + } + } + /// /// 根据PS文件加载 /// @@ -104,7 +129,7 @@ namespace AibisDream.Framework public void SaveState(string curState) { - var activeArray = _rendererDict + var activeArray = RendererDict .Where(pair => pair.Value.gameObject.activeSelf) .Select(item => item.Key) .ToArray(); @@ -132,7 +157,7 @@ namespace AibisDream.Framework { #if UNITY_EDITOR // 先验证Prefab是否存在 - if (AssetDatabase.LoadAssetAtPath(localPath) != null) + if (AssetDatabase.LoadAssetAtPath(localPath)) { // 如果存在,替换 Prefab PrefabUtility.SaveAsPrefabAssetAndConnect(target, localPath, InteractionMode.UserAction); @@ -160,7 +185,7 @@ namespace AibisDream.Framework if (!config.stateDict.TryGetValue(stateName, out var activeArray)) return; // 按状态激活 - foreach (var item in _rendererDict.Values) + foreach (var item in RendererDict.Values) { item.gameObject.SetActive(activeArray.Contains(item.gameObject.name)); } @@ -178,14 +203,14 @@ namespace AibisDream.Framework return; } - if (_rendererDict is not { Count: > 0 }) + if (RendererDict is not { Count: > 0 }) { Debug.LogWarning("还没有加载图集"); return; } // 排序 - var renderers = _rendererDict.Values; + var renderers = RendererDict.Values; var sortedRenderers = renderers.OrderBy(item => item, new LayerComparer()).ToArray(); for (var i = 0; i < sortedRenderers.Length; i++) {