/// <summary> /// シーンのフェード /// </summary> /// <param name="frame">シーンさせるフレーム</param> /// <param name="fadeInFinished">フェードイン後に行う関数</param> /// <returns></returns> public IEnumerator SceneFadeCoroutine(float frame, FadeInFinishedFunc fadeInFinished) { state = FadeState.FadeIn; float speed = 1 / frame; for (int i = 0; i < frame; i++) { Alpha += speed; yield return(null); } //Finished Func fadeInFinished(); //update state state = FadeState.FadeOut; //out for (int i = 0; i < frame; i++) { Alpha -= speed; yield return(null); } //end state state = FadeState.None; yield break; }
/// <summary> /// 全チャネルをフェードインさせるコルーチン(小さくする) /// </summary> /// <param name="frame">フェードさせるフレーム</param> /// <param name="volume">フェード先のボリューム(0.0~1.0)</param> /// <param name="func">フェードイン終了後に行う関数</param> /// <returns></returns> public IEnumerator SoundFadeInAllCoroutine(float frame, float volume = 0.0f, FadeInFinishedFunc func = null) { //状態更新 state = FadeState.FadeIn; //1フレーム当たりの増減させる量 float value = (1 - volume) / frame; //フェードフレーム分繰り返す for (int f = 0; f < frame; ++f) { //毎フレームチャネル数分繰り返す for (int c = 0; c < channel.Length; ++c) { GetChannel(c).volume -= value; } yield return(null); } //補正 for (int c = 0; c < channel.Length; ++c) { GetChannel(c).volume = volume; } //コールバック if (func != null) { func(); } //状態更新 state = FadeState.None; yield break; }
/// <summary> /// フェードインするコルーチン /// </summary> /// <param name="frame">フェードさせるフレーム</param> /// <param name="fadeInFinished">フェードイン終了後に行う関数</param> /// <returns></returns> public IEnumerator FadeInCoroutine(float frame, FadeInFinishedFunc fadeInFinished = null) { state = FadeState.FadeIn; float speed = 1 / frame; for (int i = 0; i < frame; i++) { Alpha += speed; yield return(null); } if (fadeInFinished != null) { fadeInFinished(); } state = FadeState.None; yield break; }
/// <summary> /// 全チャネルのフェードイン開始命令 /// </summary> /// <param name="frame">フェードさせるフレーム</param> /// <param name="volume">フェード先のボリューム</param> /// <param name="func">フェードイン終了後に行う関数</param> public void StartSoundFadeInAll(float frame, float volume = 0.0f, FadeInFinishedFunc func = null) { var coroutine = SoundFadeInAllCoroutine(frame, volume, func); StartCoroutine(coroutine); }
/// <summary> /// フェードイン(小さくなる)の開始命令 /// </summary> /// <param name="frame">フェードさせるフレーム</param> /// <param name="volume">フェード先のボリューム(0.0~1.0)</param> /// <param name="channelIndex">フェードさせるチャネルの番号</param> /// <param name="func">フェードイン終了後に行う関数</param> public void StartSoundFadeIn(float frame, float volume = 0.0f, int channelIndex = 0, FadeInFinishedFunc func = null) { var coroutine = FadeInCoroutine(frame, volume, channelIndex, func); StartCoroutine(coroutine); }
/// <summary> /// フェードインするコルーチン(小さくなる方) /// </summary> /// <param name="frame">フェードさせるフレーム</param> /// <param name="volume">フェード先のボリューム(0.0~1.0)</param> /// <param name="fadeInFinished">フェードイン終了後に行う関数</param> /// <returns></returns> public IEnumerator FadeInCoroutine(float frame, float volume = 0.0f, int channelIndex = 0, FadeInFinishedFunc func = null) { //フェード状態更新 state = FadeState.FadeIn; //1フレーム当たりの増減させる量 float value = (1 - volume) / frame; for (int i = 0; i < frame; ++i) { GetChannel(channelIndex).volume -= value; yield return(null); } //補正 GetChannel(channelIndex).volume = volume; //コールバック if (func != null) { func(); } //フェード状態更新 state = FadeState.None; yield break; }