Skip to content

Commit

Permalink
Preliminary Unity 6 support (#324)
Browse files Browse the repository at this point in the history
* Preliminary Unity 6 support.

* Remove comment.
  • Loading branch information
techanon authored Dec 15, 2024
1 parent 9658427 commit da57703
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
using UnityEditor;
using UnityEngine;

#if UNITY_6000_0_OR_NEWER
using UnityEditor.Build;
using UnityEditor.Build.Profile;
#endif

namespace AudioLink.Editor
{
[InitializeOnLoad]
Expand All @@ -15,33 +20,42 @@ static AudioLinkDefineManager()
Shader.EnableKeyword("AUDIOLINK_IMPORTED");
}

private static void AddDefinesIfMissing(BuildTargetGroup buildTarget, params string[] newDefines)
private static void AddDefinesIfMissing(BuildTargetGroup buildGroup, params string[] newDefines)
{
bool definesChanged = false;
string existingDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTarget);
HashSet<string> defineSet = new HashSet<string>();

if (existingDefines.Length > 0)
{
defineSet = new HashSet<string>(existingDefines.Split(';'));
}
#if UNITY_6000_0_OR_NEWER
var profile = BuildProfile.GetActiveBuildProfile();
string[] defines = profile != null
? profile.scriptingDefines
: PlayerSettings.GetScriptingDefineSymbols(NamedBuildTarget.FromBuildTargetGroup(buildGroup)).Split(';');
#else
string[] defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildGroup).Split(';');
#endif
HashSet<string> defineSet = new HashSet<string>(defines);

foreach (string newDefine in newDefines)
{
if (defineSet.Add(newDefine))
{
definesChanged = true;
}
}
definesChanged |= defineSet.Add(newDefine);

if (definesChanged)
{
#if UNITY_6000_0_OR_NEWER
if (profile != null)
{
profile.scriptingDefines = defineSet.ToArray();
Debug.LogFormat("Set Scripting Define Symbols for selected build profile ({0}) to: {1}", profile.name, string.Join(";", defineSet));
}
else
{
PlayerSettings.SetScriptingDefineSymbols(NamedBuildTarget.FromBuildTargetGroup(buildGroup), defines);
Debug.LogFormat("Set Scripting Define Symbols for selected build group ({0}) to: {1}", buildGroup.ToString(), string.Join(";", defineSet));
}
#else
string finalDefineString = string.Join(";", defineSet.ToArray());
PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTarget, finalDefineString);
Debug.LogFormat("Set Scripting Define Symbols for selected build target ({0}) to: {1}", buildTarget.ToString(), finalDefineString);
PlayerSettings.SetScriptingDefineSymbolsForGroup(buildGroup, finalDefineString);
Debug.LogFormat("Set Scripting Define Symbols for selected build target ({0}) to: {1}", buildGroup.ToString(), finalDefineString);
#endif
}
}
}

}
#endif
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,17 @@ public void LinkAll()

public static void LinkAll(AudioLink target)
{
#if UNITY_6000_0_OR_NEWER
#if UDONSHARP
MonoBehaviour[] allBehaviours = FindObjectsByType<UdonSharpBehaviour>(FindObjectsInactive.Include, FindObjectsSortMode.InstanceID);
#endif
MonoBehaviour[] allBehaviours = FindObjectsByType<MonoBehaviour>(FindObjectsInactive.Include, FindObjectsSortMode.InstanceID);
#else
#if UDONSHARP
UdonSharpBehaviour[] allBehaviours = FindObjectsOfType<UdonSharpBehaviour>();
#else
MonoBehaviour[] allBehaviours = FindObjectsOfType<MonoBehaviour>();
#endif
#endif
// this handles all reasonable cases of referencing audiolink
// (it doesn't handle referencing it multiple times in one monobehaviour, or referencing it as it's Base type)
Expand Down

0 comments on commit da57703

Please sign in to comment.