/* http://www.cgsoso.com/forum-211-1.html CG搜搜 Unity3d 每日Unity3d插件免费更新 更有VIP资源! CGSOSO 主打游戏开发,影视设计等CG资源素材。 插件如若商用,请务必官网购买! daily assets update for try. U should buy the asset from home store if u use it in your project! */ using System; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class ScreenFader : MonoBehaviour { public static ScreenFader instance; public const float DURATION = 0.37f; private void Awake() { instance = this; } private void Start() { GTil.Init(this); } public void FadeOut(Action onComplete) { GetComponent().SetTrigger("fade_out"); GetComponent().enabled = true; Timer.Schedule(this, 0.37f, delegate { if (onComplete != null) { onComplete(); } }); } public void FadeIn(Action onComplete) { GetComponent().SetTrigger("fade_in"); Timer.Schedule(this, 0.37f, delegate { GetComponent().enabled = false; if (onComplete != null) { onComplete(); } }); } public void GotoScene(int sceneIndex) { FadeOut(delegate { CUtils.LoadScene(sceneIndex); }); } private void OnEnable() { SceneManager.sceneLoaded += OnLevelFinishedLoading; } private void OnDisable() { SceneManager.sceneLoaded -= OnLevelFinishedLoading; } private void OnLevelFinishedLoading(Scene scene, LoadSceneMode mode) { if (GetComponent().GetCurrentAnimatorStateInfo(0).IsName("ScreenFader_Out")) { FadeIn(null); } } }