Last active
July 2, 2023 00:18
-
-
Save LaneF/91b4142c0387c10c195cdc45a0f10e57 to your computer and use it in GitHub Desktop.
Unity Define Symbols Utility
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Text; | |
using UnityEditor; | |
using UnityEngine; | |
namespace Cleverous | |
{ | |
public static class DefineSymbolUtil | |
{ | |
public const string Symbol = "YOUR_DEFINE_SYMBOL"; | |
[MenuItem("Tools/YOUR TOOL/Install Define Symbol", priority = 900)] | |
public static void InstallDefines() | |
{ | |
RemoveDefine(Symbol); | |
AddDefine(Symbol); | |
} | |
[UnityEditor.Callbacks.DidReloadScripts] | |
public static void Verify() | |
{ | |
if (!PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup) | |
.Contains(Symbol)) | |
{ | |
Debug.Log($"Define Symbol '{Symbol}' was not detected so it has been installed. Unity will recompile."); | |
InstallDefines(); | |
} | |
} | |
public static void AddDefine(string def) | |
{ | |
StringBuilder sb = new StringBuilder(); | |
sb.Append(PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup)); | |
if (sb.Length == 0) sb.Append(def + ";"); | |
else sb.Append($"{(sb[sb.Length - 1] == ';' ? "" : ";")}{def}"); | |
PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, sb.ToString()); | |
} | |
public static void RemoveDefine(string def) | |
{ | |
PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, | |
PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup).Replace(def, "")); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Updated to fix bug and account for cases where no defines initially exist.