N煎ログブログ

n番煎じと言っても過言ではない今更な、でも個人的に躓いたUnityやUE4等での開発についての云々を書いていきます

【Unity2017】フェードイン / アウトをUI含めて1スクリプトで制御する

目次

はじめに

フェードイン / アウトはゲームを制作していく過程で導入するのは少なくないと思います。

しかしゲームを制作するたびにこれらの処理やフラグ管理などを作るのは流石に面倒ですし使いまわすにしてもUI周りで扱いづらくなりそうだなと感じました。

そのため、UI周りやフラグも含めて全ての処理を1スクリプトで制御するスクリプトを制作しました。

以下がそのスクリプトです。

delegate, Action共に初めて使うので2つ実装してみました。

 

[追記(2018/03/13)]

  • 一部変数を削除しました。
  • スクリプトをシングルトンにしました。
  • オブジェクトにアタッチしなくても呼び出すだけで自動でUIだけでなくオブジェクト周りも生成するようになりました。

[追記(2018/04/20)]

  • static変数がメンバ変数コード規約「m_」になっていたのを「s_」に修正しました。
  • よくよく見直してみたらプロパティ内で色々生成なりAddComponentなりしちゃってるので、修正案ができ次第修正します。
  • 修正しました(2018/4/21)。が、なんだかややこしいコードになってしまい可読性や管理性がやや低下してしまっているので引き続き代替案が出次第更新します。

スクリプト(delegate版)

gist.github.com

スクリプト(Action版)

gist.github.com

スクリプト(修正版)

github.com

使い方

任意のオブジェクトにスクリプトを貼っつけて、

[追記(2018/03/13)]

  • 不要になりました

[追記(2018/04/22)]

  • アセット処理の初回実行時の前に「CreateInstance」を呼ばなければならないようになりました。
  1. FadeController.CreateInstance(this)でインスタンスを生成しよう(1度だけでOK)
  2. FadeController.Instanceで取得しましょう
  3. FadeIn, Out(フェード時間)で動作します。
  4. FadeIn, Out(フェード時間, 終了後に呼び出す関数)でフェード後に任意の関数を呼び出すことが出来ます。
  5. IsCompleteプロパティからでも終了フラグを取得することが出来ます。
  6. SetColor(色)でフェード色を変えることも出来ます。
  7. 必要なくなったらFadeController.DestroyInstance()で削除しよう

AssetStoreにリリースしました!

AssetStoreに申請し、無事リリースされました!

是非AssetStoreページの方でご評価、コメント等よろしくおねがいします!