开关菜单使用

 

 

#if UNITY_EDITOR

using UnityEditor;

public class MyToggleMenu 
{
    const string PrefsKey_IsAutoReloadXxx = "MyToggleMenu.IsAutoReloadXxx";
    static int _isAutoReloadXxx = -1;

    static bool IsAutoReloadXxx
    {
        get
        {
            if (-1 == _isAutoReloadXxx)
                _isAutoReloadXxx = EditorPrefs.GetInt(PrefsKey_IsAutoReloadXxx, 0);
            return 1 == _isAutoReloadXxx;
        }
        set
        {
            var newValue = value ? 1 : 0;
            if (_isAutoReloadXxx != newValue)
            {
                _isAutoReloadXxx = newValue;
                EditorPrefs.SetInt(PrefsKey_IsAutoReloadXxx, newValue);
            }
        }
    }

    [MenuItem(MenuItemPath_IsAutoReloadXxx, true)]
    static bool MenuItemValidator_IsAutoReloadXxx()
    {
        Menu.SetChecked(MenuItemPath_IsAutoReloadXxx, IsAutoReloadXxx);
        var menuItemEnable = !EditorApplication.isCompiling;
        return menuItemEnable;
    }

    const string MenuItemPath_IsAutoReloadXxx = "Window/MyTools/IsAutoReloadXxx";
    [MenuItem(MenuItemPath_IsAutoReloadXxx, false)]
    static void MenuItem_IsAutoReloadXxx()
    {
        IsAutoReloadXxx = !Menu.GetChecked(MenuItemPath_IsAutoReloadXxx);
    }
    
}

#endif

 

另一种写法

const string PrefsKey_IsEnable = "BMFontTool.IsEnable";
static int _enableFlag = -1; //-1_未初始化, 0_false, 1_true

public static bool IsEnable
{
    get
    {
        if (-1 == _enableFlag)
        {
            _enableFlag = 1;
            _enableFlag = EditorPrefs.GetInt(PrefsKey_IsEnable, 1); //默认开启
        }
        return 1 == _enableFlag;
    }
    set
    {
        var newValue = value ? 1 : 0;
        if (_enableFlag != newValue)
        {
            _enableFlag = newValue;
            EditorPrefs.SetInt(PrefsKey_IsEnable, _enableFlag);
        }
    }
}

[MenuItem(MenuItemPath_IsEnable, true)]
static bool MenuItemValidator_IsEnable()
{
    Menu.SetChecked(MenuItemPath_IsEnable, IsEnable);
    return true;
}

const string MenuItemPath_IsEnable = "Assets/BMFont/BMFontTool";
[MenuItem(MenuItemPath_IsEnable, false, 11)]
static void MenuItem_IsEnable()
{
    IsEnable = !Menu.GetChecked(MenuItemPath_IsEnable);
}

 

posted @ 2022-03-25 21:49  yanghui01  阅读(35)  评论(0编辑  收藏  举报