void DisableUnityAudioPage() { EditorGUILayout.LabelField("We recommend that you disable the built-in Unity audio for all platforms, to prevent it from consuming system audio resources that the FMOD Engine needs.", titleStyle); GUILayout.FlexibleSpace(); var audioManager = AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/AudioManager.asset")[0]; var serializedManager = new SerializedObject(audioManager); var prop = serializedManager.FindProperty("m_DisableAudio"); using (new EditorGUILayout.HorizontalScope()) { using (new EditorGUI.DisabledGroupScope(prop.boolValue)) { GUILayout.FlexibleSpace(); if (GUILayout.Button(prop.boolValue ? "Built in audio has been disabled" : "Disable built in audio", buttonStyle)) { prop.boolValue = true; serializedManager.ApplyModifiedProperties(); RuntimeUtils.DebugLog("[FMOD Assistant] Built in Unity audio has been disabled."); Repaint(); } } GUILayout.FlexibleSpace(); } pageComplete[(int)PAGES.UnityAudio] = prop.boolValue; GUILayout.FlexibleSpace(); }
public static void Initialize() { if (instance == null) { isInitializing = true; instance = Resources.Load(SettingsAssetName) as Settings; if (instance == null) { RuntimeUtils.DebugLog("[FMOD] Cannot find integration settings, creating default settings"); instance = CreateInstance <Settings>(); instance.name = "FMOD Studio Integration Settings"; instance.CurrentVersion = FMOD.VERSION.number; instance.LastEventReferenceScanVersion = FMOD.VERSION.number; #if UNITY_EDITOR if (editorSettings != null) { editorSettings.CreateSettingsAsset(SettingsAssetName); } else { // editorSettings is populated via the static constructor of FMODUnity.EditorSettings when in the Unity editor. RuntimeUtils.DebugLogError("[FMOD] Attempted to instantiate Settings before EditorSettings was populated. " + "Ensure that Settings.Instance is not being called from an InitializeOnLoad method or class."); } #endif } isInitializing = false; } }
void ListenerPage() { EditorGUILayout.LabelField("If you do not intend to use the built in Unity audio, you can choose to replace the Audio Listener with the FMOD Studio Listener.\n", titleLeftStyle); EditorGUILayout.LabelField("Adding the FMOD Studio Listener component to the main camera provides the FMOD Engine with the information it needs to play 3D events correctly.", titleLeftStyle); EditorGUILayout.Space(); GUILayout.FlexibleSpace(); using (new EditorGUILayout.HorizontalScope()) { GUILayout.FlexibleSpace(); // Display found objects containing Unity listeners DisplayListeners(unityListeners, ref scroll1); // Show FMOD Listeners DisplayListeners(fmodListeners, ref scroll2); GUILayout.FlexibleSpace(); } using (new EditorGUILayout.HorizontalScope()) { using (new EditorGUI.DisabledGroupScope(!bFoundUnityListener)) { GUILayout.FlexibleSpace(); if (GUILayout.Button("Replace Unity " + ((unityListeners != null && unityListeners.Length > 1) ? "Listeners" : "Listener") + " with FMOD Audio Listener.", buttonStyle)) { for (int i = 0; i < unityListeners.Length; i++) { var listener = unityListeners[i]; if (listener) { RuntimeUtils.DebugLog("[FMOD Assistant] Replacing Unity Listener with FMOD Listener on " + listener.gameObject.name); if (listener.GetComponent <StudioListener>() == null) { listener.gameObject.AddComponent(typeof(StudioListener)); } DestroyImmediate(unityListeners[i]); EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene()); Repaint(); } } } } GUILayout.FlexibleSpace(); } }
private static void SelectBinaries(Platform platform, BuildTarget target, Platform.BinaryType binaryType) { string message = string.Format("FMOD: Selected binaries for platform {0}{1}:", target, (binaryType == Platform.BinaryType.Logging) ? " (development build)" : string.Empty); Instance.binaryCompatibilitiesBeforeBuild = new Dictionary <string, bool>(); HashSet <string> enabledPaths = new HashSet <string>(); foreach (string path in platform.GetBinaryAssetPaths(target, binaryType | Platform.BinaryType.Optional)) { PluginImporter importer = AssetImporter.GetAtPath(path) as PluginImporter; if (importer is PluginImporter) { Instance.binaryCompatibilitiesBeforeBuild.Add(path, importer.GetCompatibleWithPlatform(target)); importer.SetCompatibleWithPlatform(target, true); enabledPaths.Add(path); message += string.Format("\n- Enabled {0}", path); } } foreach (string path in platform.GetBinaryAssetPaths(target, Platform.BinaryType.All)) { if (!enabledPaths.Contains(path)) { PluginImporter importer = AssetImporter.GetAtPath(path) as PluginImporter; if (importer is PluginImporter) { Instance.binaryCompatibilitiesBeforeBuild.Add(path, importer.GetCompatibleWithPlatform(target)); importer.SetCompatibleWithPlatform(target, false); message += string.Format("\n- Disabled {0}", path); } } } RuntimeUtils.DebugLog(message); }