using UnityEditor; /// /// 新手引导开关 /// public class GuideEditor : Editor { /// /// 新手引导宏 /// private const string MACRO_GUIDE = "GUIDE"; private const string GUIDE_TOOL = "Tools/新手引导"; [MenuItem(GUIDE_TOOL, true)] public static bool GuideMenu() { BuildTargetGroup currentTargetGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget); string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentTargetGroup); Menu.SetChecked(GUIDE_TOOL, currentDefines.Contains(MACRO_GUIDE)); return true; } [MenuItem(GUIDE_TOOL)] public static void SwitchGuide() { BuildTargetGroup currentTargetGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget); string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentTargetGroup); bool isCheck = !currentDefines.Contains(MACRO_GUIDE); SetDefineSymbols(currentTargetGroup, MACRO_GUIDE, isCheck); Menu.SetChecked(GUIDE_TOOL, isCheck); } 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); } }