内容へ移動
ユーザ用ツール
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
現在位置:
Home
»
wiki
»
Unity
»
Tips
»
061 フェードイン・アウトを実装する
トレース:
wiki:unity:tips:061
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 061 フェードイン・アウトを実装する ====== ===== 概要 ===== コルーチンを使って、画面のフェードイン/フェードアウトを実現します。 フェード後に関数を呼び出せます。 ==== ソースコード ==== <code csharp> using UnityEngine; using System.Collections; using System; // // Faderクラス // // 任意のGameObjectに割り当てて使用します。 // // public class Fader : Singleton<Fader> { public enum FADE_TYPE { FADE_IN = 0, FADE_OUT = 1, FADE_OUTIN = 2, }; private Texture2D fadeTexture = null; private float fadeAlpha = 0; protected override void Initialize() { // 黒テクスチャの作成。 this.fadeTexture = new Texture2D( 1, 1 ); this.fadeTexture.SetPixel( 0, 0, Color.black ); this.fadeTexture.Apply(); } public void OnGUI() { //透明度を更新して黒テクスチャを描画 if( Event.current.type == EventType.Repaint ) { GUI.color = new Color( 0, 0, 0, this.fadeAlpha ); GUI.DrawTexture( new Rect( 0, 0, Screen.width, Screen.height ), this.fadeTexture ); } } // フェード開始 // _type フェードの種類 // _interval フェードにかける時間 // _interval _onActionフェード完了後に呼ぶ関数 public void StartFade( FADE_TYPE _type, float _interval, Action _onAction ) { this.gameObject.SetActive( true ); switch( _type ) { case FADE_TYPE.FADE_OUT: StartCoroutine( FadeOut( _interval, _onAction ) ); break; case FADE_TYPE.FADE_IN: StartCoroutine( FadeIn( _interval, _onAction ) ); break; case FADE_TYPE.FADE_OUTIN: StartCoroutine( FadeOutIn( _interval, _onAction ) ); break; }; } private IEnumerator Fade( FADE_TYPE _type, float interval ) { float time = 0; float min = ( _type == FADE_TYPE.FADE_OUT) ? 0.0f : 1.0f; float max = ( _type == FADE_TYPE.FADE_OUT) ? 1.0f : 0.0f; while( time <= interval ) { this.fadeAlpha = Mathf.Lerp( min, max, time / interval ); time += Time.deltaTime; yield return 0; } } private IEnumerator FadeOut( float interval, Action _onAction ) { yield return StartCoroutine( Fade( FADE_TYPE.FADE_OUT, interval ) ); _onAction(); this.gameObject.SetActive( false ); } private IEnumerator FadeIn( float interval, Action _onAction ) { yield return StartCoroutine( Fade( FADE_TYPE.FADE_IN, interval ) ); _onAction(); this.gameObject.SetActive( false ); } private IEnumerator FadeOutIn( float interval, Action _onAction ) { yield return StartCoroutine( Fade( FADE_TYPE.FADE_OUT, interval ) ); _onAction(); yield return StartCoroutine( Fade( FADE_TYPE.FADE_IN, interval ) ); this.gameObject.SetActive( false ); } } </code> ==== 使い方 ==== <code csharp> Fader.Instance.StartFade( Fader.FADE_TYPE.FADE_OUTIN, 0.4f, () => { Application.LoadLevel( "title" ); }); </code>
Permalink
wiki/unity/tips/061.txt
· 最終更新: 2014/11/13 08:38 (外部編集)
ページ用ツール
ログイン
文書の表示
文書の先頭へ
印刷
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
oeffentlich