protected void Update() { // Skip key if( m_SkipMode != SkipModes.NoSkip && ( Input.GetKeyUp( m_SkipKey ) || Input.touchCount > 0 ) ) { // We end the current slide but accumulating time equivalent to the slide's show time. m_TimeAccum += ( m_SplashScreens[ m_CurrentIndex ].m_TimeToShow - Timers.Instance.Game.GetDeltaTime() - m_TimeAccum ); if( m_SkipMode == SkipModes.SkipToExit ) { // if skip to exit is chosen, we just set to the final slide. m_CurrentIndex = m_SplashScreens.Length - 1; } } if( m_State == SplashScreenLifecycle.Display ) { m_TimeAccum += Timers.Instance.Game.GetDeltaTime(); if( m_TimeAccum >= m_SplashScreens[ m_CurrentIndex ].m_TimeToShow ) { m_NextIndex = m_CurrentIndex + 1; if( m_NextIndex < m_SplashScreens.Length ) { m_Fader.SetTransitionCallback( OnFinishTransition ); m_Fader.FadeOut(); m_State = SplashScreenLifecycle.FadeOut; } else { m_State = SplashScreenLifecycle.Exit; } } } if( m_State == SplashScreenLifecycle.FadeOutComplete ) { m_CurrentIndex = m_NextIndex; Renderer splashObjectRenderer = m_SplashObject.GetComponent< Renderer >() as Renderer; if( splashObjectRenderer ) { splashObjectRenderer.material.mainTexture = m_SplashScreens[ m_CurrentIndex ].m_SplashImage; } m_Fader.SetTransitionCallback( OnFinishTransition ); m_Fader.FadeIn(); m_State = SplashScreenLifecycle.FadeIn; } if( m_State == SplashScreenLifecycle.FadeInComplete ) { m_TimeAccum = 0.0f; m_State = SplashScreenLifecycle.Display; } if( m_State == SplashScreenLifecycle.Exit ) { SceneManager.Instance.LoadScene( m_sceneToLoadNext, m_useTransitionOnSceneLoad, m_useCleanupOnSceneLoad ); enabled = false; } }
protected void OnFinishTransition( Fader.CallbackStates state, bool isFadeIn ) { if( isFadeIn ) { m_State = SplashScreenLifecycle.FadeInComplete; } else { m_State = SplashScreenLifecycle.FadeOutComplete; } }