フェードイン・フェードアウトとシングルトン

どうにも上手くいかないので、フェードインとフェードアウトについてまとめることにします。それから、今日はなんだかよくわからないシングルトンとジェネリックという言葉も出てきたので、それについてもまとめようと思います。

 

最初にシングルトンについて。

 

シングルトンというのはそのクラスのインスタンスが一つしか生成されないことが保証されるそうです。

 

この時点でよく意味が分かりません。

 

そもそもクラスとインスタンス自体あんまりよく理解してないので。

 

とりあえず、シングルトンは一つあれば十分なものは一つ作るだけにしようという考え方のようです。

 

例えばオーディオの設定だと、ゲームのコンフィングで設定したボリュームはゲーム内ではどのステージでも共通なので、(逆に共通じゃないとせっかく設定した意味がないです。ユーザーから苦情が・・・)その辺の管理は一つのところで行うべきです。

 

Unityだとシーンを移動するとゲームオブジェクトは破棄されてしまうので、シーンをまたいでも破棄されないようにDontDestroyOnLoad (破棄しないようにするGameObject)としておいて使う感じでしょうか。

 

次に、ジェネリックですが、もちろん医薬品ではないです。

これはプログラムの使いまわしみたいな感じです。intとかfloat等のデータの型が違うけど、処理内容は全く一緒。といった場合に一々同じようなプログラムを組むのが面倒くさいので、型が違っても動かせるような書き方で書く方法という感じでしょうか?

 

これは、ちょうど先ほど出てきた、破棄しないようにしたオーディオのゲームオブジェクトを他のスクリプトで使いたい場合にゲームオブジェクトを見つける必要が出てきます。

 

変数を作ってオブジェクトを見つけてそれに入れて・・・

 

といったことをするかと思います。

ここでは特に、オーディオのゲームオブジェクトは一つしかないことが分かっているので、(シングルストンにしてるので)色々なスクリプトに一々書くのは面倒です。

 

そこで、シングルストンな(絶対一つしかない)オブジェクトはそんなことしなくても

普通にスクリプトの記述しただけで使えるようにすることができるようにするためにジェネリックスクリプトを作るようです。

 

ジェネリックの使い方は色々あるんでしょうけど、とりあえずフェードについて書いてあるサイトではそんな感じで使っているようでした。

 

ちなみに参考にしたのはこちらのサイトです。

naichilab.blogspot.jp

 

 

しかしながら、こちらのサイトはOnGUIでやってるんですよね。(uGUIが出る前なので)どうせならuGUIでやろうと思って色々調べたりしてたら結局間に合わなかったです。

 

ついでに参考にしたサイトのプログラムをコピペしたらUnityがおかしくなりました・・・。

 

 

追記

その後しばらく色々悩んでましたが、Unityの公式ページにフェードのプログラムのサンプルがありました。

これでいいんじゃないかと思ってコピペしたら、またしてもエラーが・・・。

 

最終的に英語のページから公式を少し修正したプログラムを発見し、その後また色々直してようやく完成しました。

詳しくは次の記事へ