protected virtual void Awake() { if (!Application.isPlaying) { return; } if (instance != null) { Destroy(gameObject); return; } instance = GetComponent <AFmodAudioSystem>(); if (!transform.parent) { DontDestroyOnLoad(gameObject); } strFilePath = Application.streamingAssetsPath + "/Audio/"; if (system == null) { Factory.System_Create(out system); system.setSoftwareFormat(48000, SPEAKERMODE.MAX, 0); system.init(64, INITFLAGS.NORMAL, (IntPtr)null); } FmodAudioManager.Init(); InitSounds(); DontDestroyOnLoad(gameObject); }
private void OnDestroy() { if (instance != this) { return; } if (system == null) { return; } int n = 0, m = 0; Memory.GetStats(out n, out m); FmodAudioManager.Release(); //DOAll(fam => fam.Release()); FmodSoundCreater.ReleaseInstance(); system.close(); system.release(); system = null; Memory.GetStats(out n, out m); if (n > 0) { Debug.LogError("FmodAudioSystem Memory Leak:Current " + n + " Maximum " + m); } }
//全局实例化 internal static void Init() { audioManagerInstances = new FmodAudioManager[7]; for (int i = 0; i < 7; i++) { audioManagerInstances[i] = new FmodAudioManager(i); audioManagerInstances[i].InitChannelGroup(); } }
// Update is called once per frame private void Update() { if (Input.GetKeyDown(KeyCode.Alpha1)) { FmodAudioManager.GetAudioManager(0).PlaySE(FmodSE.instance.coin); } if (Input.GetKeyDown(KeyCode.Alpha2)) { FmodAudioManager.GetAudioManager(1).PlaySE(FmodSE.instance.coin); } if (Input.GetKeyDown(KeyCode.Alpha3)) { FmodAudioManager.GetAudioManager(2).PlaySE(FmodSE.instance.coin); } if (Input.GetKeyDown(KeyCode.Alpha4)) { FmodAudioManager.GetAudioManager(3).PlaySE(FmodSE.instance.coin); } if (Input.GetKeyDown(KeyCode.Alpha5)) { FmodAudioManager.GetAudioManager(4).PlaySE(FmodSE.instance.coin); } if (Input.GetKeyDown(KeyCode.Alpha6)) { FmodAudioManager.GetAudioManager(5).PlaySE(FmodSE.instance.coin); } if (Input.GetKeyDown(KeyCode.Alpha7)) { FmodAudioManager.GetAudioManagerGlobal().PlaySE(FmodSE.instance.coin); } if (Input.GetKeyDown(KeyCode.Alpha8)) { FmodAudioManager.GetAudioManager(0).PlayVOC(FmodSE.instance.coin); } if (Input.GetKeyDown(KeyCode.Alpha9)) { FmodAudioManager.GetAudioManager(0).PauseVOC(true); } if (Input.GetKeyDown(KeyCode.Alpha0)) { FmodAudioManager.GetAudioManager(0).PauseVOC(false); } }
//Follow UnityEditor paused private static void Paused() { FmodAudioManager.DOAll(m => m.PauseAll(EditorApplication.isPaused)); }