using UnityEditor; using UnityEngine; using UnityToolbarExtender; using XGame.Framework.Asset; namespace XGame.Editor.Asset { [InitializeOnLoad] class AssetModeNavigation : INavigation { static readonly string[,] AssetModeContent = { { "AssetBundle", "当前模式:AssetBundle\n运行时不可切换" }, { "AssetDatabase", "当前模式:AssetDatabase\n运行时不可切换" } }; bool _assetMode; public int Order => 200; public void OnGUI() { GUILayout.Space(50); _assetMode = EditorPrefs.GetBool(Define.SIMULATE_ASSETBUNDLE_EDITOR_KEY, true); EditorGUI.BeginDisabledGroup(Application.isPlaying); if (GUILayout.Button(new GUIContent(AssetModeContent[_assetMode ? 1 : 0, 0], AssetModeContent[_assetMode ? 1 : 0, 1]), ToolbarStyles.assetModeButtonStyle)) { _assetMode = !_assetMode; Debug.Log($"切换资源模式成功,当前模式:{AssetModeContent[_assetMode ? 1 : 0, 0]}"); EditorSettings.spritePackerMode = _assetMode ? UnityEditor.SpritePackerMode.AlwaysOnAtlas : UnityEditor.SpritePackerMode.BuildTimeOnlyAtlas; EditorPrefs.SetBool(Define.SIMULATE_ASSETBUNDLE_EDITOR_KEY, _assetMode); } EditorGUI.EndDisabledGroup(); } static AssetModeNavigation() { ToolbarExtender.AddToLeft(new AssetModeNavigation()); } static class ToolbarStyles { public static readonly GUIStyle assetModeButtonStyle; static ToolbarStyles() { assetModeButtonStyle = new GUIStyle("Command") { fixedWidth = 100, fontSize = 13, alignment = TextAnchor.MiddleCenter, imagePosition = ImagePosition.ImageAbove, fontStyle = FontStyle.Bold }; } } } }