using Gameplay.FirstTimeFlow; using Gameplay.FunctionLock; using Gameplay.Guide; using UnityEditor; using UnityEngine; /// /// 功能开关窗口 /// public sealed class FunctionSwitchWindow : EditorWindow { [MenuItem("Tools/*功能开关")] private static void ShowWindow() { FunctionSwitchWindow window = (FunctionSwitchWindow)GetWindow(typeof(FunctionSwitchWindow), true, "功能开关"); window.Show(); window.Focus(); } /// /// 是否开启强制流程 /// private bool isEnableFirstTimeFlow; /// /// 是否开启引导 /// private bool isEnableGuide; /// /// 是否开启功能锁 /// private bool isEnableFunctionLock; private void OnEnable() { //BuildTargetGroup currentTargetGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget); //string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentTargetGroup); isEnableFirstTimeFlow = 1 == PlayerPrefs.GetInt(FirstTimeFlowManager.SWITCH_KEY, 0); isEnableGuide = 1 == PlayerPrefs.GetInt(GuideManager.SWITCH_KEY, 0); isEnableFunctionLock = 1 == PlayerPrefs.GetInt(FunctionLockManager.SWITCH_KEY, 0); } private void OnGUI() { isEnableFirstTimeFlow = EditorGUILayout.Toggle("强制流程", isEnableFirstTimeFlow); isEnableGuide = EditorGUILayout.Toggle("新手引导(开引导默认开强制流程)", isEnableGuide); if (isEnableGuide) isEnableFirstTimeFlow = true; isEnableFunctionLock = EditorGUILayout.Toggle("功能锁", isEnableFunctionLock); if (GUILayout.Button("确定")) { //BuildTargetGroup currentTargetGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget); //SetDefineSymbols(currentTargetGroup, LOCAL_FIRST_TIME_FLOW, isEnableFirstTimeFlow); SetSwitchState(FirstTimeFlowManager.SWITCH_KEY, isEnableFirstTimeFlow); SetSwitchState(GuideManager.SWITCH_KEY, isEnableGuide); SetSwitchState(FunctionLockManager.SWITCH_KEY, isEnableFunctionLock); PlayerPrefs.Save(); Close(); } } private void SetSwitchState(string key, bool isOpen) { PlayerPrefs.SetInt(key, isOpen ? 1 : 0); } /// /// 设置宏定义列表 /// /// /// /// private static void SetDefineSymbols(BuildTargetGroup buildTargetGroup, string define, bool enable) { string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup);//获取目标平台下的宏命令 if (enable) { if (!currentDefines.Contains(define)) currentDefines += $";{define}"; } else currentDefines = currentDefines.Replace(define, string.Empty); PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, currentDefines); } }