/**********************************************************************************/ // проверяем, не надо ли включить следующий клип // /**********************************************************************************/ private void FixedUpdate() { if (m_state != GAM_STATE.INIT) { // обновляем таймера m_nextTreckSwitch -= Time.deltaTime; m_currentTrackTiming += Time.deltaTime; if (m_trackState == TRACK_STATE.PLAY) { // проверяем время до конца трека // если осталось меньше MusicTrackFadeOut - переключаем треки if (m_nextTreckSwitch <= MusicTrackFadeOut) { PlayNextTrack(); m_trackState = TRACK_STATE.SWITCHING; } } else if (m_trackState == TRACK_STATE.SWITCHING) { // обновляем громкости в зависимости от прошедшего времени if (m_currentTrackTiming >= MusicTrackFadeOut) { MusicSource1.volume = MusicVolume; MusicSource2.volume = 0.0f; MusicSource2.Stop(); m_trackState = TRACK_STATE.PLAY; } else { float volumeChangeSpeed = (MusicVolume / MusicTrackFadeOut) * Time.deltaTime; MusicSource1.volume += volumeChangeSpeed; MusicSource2.volume -= volumeChangeSpeed; } } // проверяем состояние воспроизводимых эффектов bool process = true; while (process && m_soundeSourceInUseCollections.Count > 0) { AudioSource source = m_soundeSourceInUseCollections.First.Value; // если воспроизведение закончилось, перемещаем дорожку в список свободных if (!source.isPlaying) { m_soundeSourceInUseCollections.RemoveFirst(); m_freeSourceCollections.AddLast(source); } else { // в противном случае прерываем обработку process = false; } } ProcessTimersAndQueue(); } }
private void Awake() { if (!TargetDesignatorFrustrum || !TargetDesignatorSphere || !PodCamera) { Debug.LogWarning(gameObject.name.ToString() + "is missing a reference!"); } TrackingState = TRACK_STATE.NONE; PreviousTrackingState = TRACK_STATE.NONE; _areaTrackTime = 1.0f; _tmsHoldTime = 0.0f; }
/**********************************************************************************/ // парсим звуки, сохраняем всю необходимую информацию // /**********************************************************************************/ private void Start() { // парсим все звуковые эффекты и сохраняем их по ключу for (int i = 0; i < SoundAudioSources.Count; i++) { string key = SoundAudioSources[i].Key; m_soundEffectCollection[key] = SoundAudioSources[i]; // настраиваем таймера и очереди m_soundTimers[key] = 0.0f; m_soundQueue[key] = 0; } // настраиваем изначальное состояние m_trackState = TRACK_STATE.SWITCHING; m_state = GAM_STATE.MENU; // да будет диско! // запускаем музыку PlayNextTrack(); }
void UpdateTrackingState(TRACK_STATE state) { PreviousTrackingState = TrackingState; TrackingState = state; }
/**********************************************************************************/ // переходим в меню // /**********************************************************************************/ public void SwitchToMenuMode() { m_state = GAM_STATE.MENU; m_trackState = TRACK_STATE.SWITCHING; m_nextTreckSwitch = MusicTrackFadeOut; }