FC2ブログ
    08 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 10

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【Unity】フェードアウト・フェードイン 

    こんにちわ、坂内っす。
    今回はフェードイン・フェードアウトについてサクッと書いてみようかと
    思っております。
    結構色々な方がホームページ等で書かれていますが、ほぼ同じです!!あしからず。

    フェードイン・フェードアウトってゲームではよく使われますよね~
    ってことで、ミニネタとして書いておきまっす!

    まずは、フェードインフェードアウト用のコントローラを作成。
    using UnityEngine;
    using System.Collections;

    public class FadeController : MonoBehaviour {
    public enum FADE_SCENE{
    FADE_OUT_TITLE = 1,
    FADE_OUT_SCENE1,
    FADE_OUT_SCENE2,
    }
    public Texture2D blackTexture;
    float alpha;
    public FADE_SCENE fadeoutToScene;
    bool fadeInFlg;

    void Start () {
    fadeoutToScene = 0;
    alpha = 1;
    fadeInFlg = true;
    }

    public void MoveScene(FADE_SCENE moveToScene){
    fadeoutToScene = moveToScene;
    }

    void OnGUI(){
    if(fadeInFlg){
    float dim = Mathf.Clamp01(Time.deltaTime);
    alpha -= dim;
    GUI.color = new Color(0, 0, 0, alpha);
    GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height),
    blackTexture);
    if(alpha <= 0){
    fadeInFlg = false;
    }
    }else if((int)fadeoutToScene > 0){
    float dim = Mathf.Clamp01(Time.deltaTime);
    alpha += dim;
    GUI.color = new Color(0, 0, 0, alpha);
    GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height),
    blackTexture);
    if(alpha > 1){
    switch(fadeoutToScene){
    case FADE_SCENE.FADE_OUT_TITLE:
    Application.LoadLevel("Title");
    break;
    case FADE_SCENE.FADE_OUT_SCENE1:
    Application.LoadLevel("Scene1");
    break;
    case FADE_SCENE.FADE_OUT_SCENE2:
    Application.LoadLevel("Scene2");
    break;
    }
    }
    }
    }
    }

    で、blackTextureに1pxの黒いpngをアサインしておきます。
    これで準備完了!

    あとは、各シーンにて移動するときにこのコントローラのMoveSceneを呼ぶだけ!

    using UnityEngine;
    using System.Collections;

    [ExecuteInEditMode]
    public class Test : MonoBehaviour {
    FadeController fade;

    void Start(){
    fade = gameObject.GetComponent<FadeController>();
    }

    public void MoveToScene1(){
    fade.MoveScene(FadeController.FADE_SCENE.FADE_OUT_SCENE1);
    }
    public void MoveToScene2(){
    fade.MoveScene(FadeController.FADE_SCENE.FADE_OUT_SCENE2);
    }
    }

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/66-7feb9ad0
    この記事にトラックバックする(FC2ブログユーザー)