public void SwitchTrack() { SceneAudio _audioPlayer = _sceneAudio.GetComponent <SceneAudio>(); MusicFader _crossFade = GetComponent <MusicFader>(); int _trackId_1 = _audioPlayer._trackId_1; int _trackId_2 = _audioPlayer._trackId_2; float _source_vol_1 = _audioPlayer._source_volume_1; float _source_vol_2 = _audioPlayer._source_volume_2; int currentSource = _audioPlayer._audioSource; if (currentSource == 1) { _audioPlayer.SelectTrack(_trackId_2, 2, _source_vol_2); _crossFade.FadeAudio(80.5f, _source_vol_2, _source_vol_1, 3); _audioPlayer._audioSource = 2; } else if (currentSource == 2) { _audioPlayer.SelectTrack(_trackId_1, 1, _source_vol_1); _crossFade.FadeAudio(80.5f, _source_vol_1, _source_vol_2, 3); _audioPlayer._audioSource = 1; } }
private IEnumerator loadSceneAudioPrefab(string scene) { if (!sceneDefinitions.TryGetValue(scene, out var sceneDefinition)) { yield break; } PrefabContentKey audioContentKey = sceneDefinition.SceneAudioContentKey; if (audioContentKey == null || string.IsNullOrEmpty(audioContentKey.Key) || !Content.ContainsKey(audioContentKey)) { yield break; } AssetRequest <GameObject> audioRequest = Content.LoadAsync(audioContentKey); yield return(audioRequest); if (audioRequest.Asset != null) { if (sceneAudio.AudioPrefab != null) { Log.LogErrorFormatted(this, "SceneAudio {0} for scene {1} was not properly cleaned up before loading a new one.", sceneAudio.AudioPrefab.name, sceneAudio.SceneName); unpinCurrentAudioPrefab(); } Content.TryPinBundle(audioContentKey.Key); sceneAudio = default(SceneAudio); sceneAudio.SceneName = scene; sceneAudio.AudioPrefabContentKey = audioContentKey.Key; sceneAudio.AudioPrefab = Object.Instantiate(audioRequest.Asset); Object.DontDestroyOnLoad(sceneAudio.AudioPrefab); } else { Log.LogError(this, "Failed to load audio prefab for scene: " + scene); } }
IEnumerator switchToNextScene(SceneAudio audio) { yield return(StartCoroutine(switchToNextClip(audio.intro))); loopSource.clip = audio.loop; loopSource.loop = true; loopSource.PlayScheduled(AudioSettings.dspTime + audio.intro.length); }
private void switchAudio(SceneAudio audio) { if (sceneAudio != audio) { //StartCoroutine(switchToNextClip(audio.intro)); StartCoroutine(switchToNextScene(audio)); sceneAudio = audio; } }