ブルーノのC#プログラミング & unity勉強日記

プログラミング素人、ブルーノの自主勉強ノートです。他のプログラミングを勉強したい方の助けになれば幸いです。その他趣味の雑記もしていきたいです

No.002 進捗状況15[ゼルダっぽいタイトル画面]

f:id:covory10101101276:20190514165718j:plain
ブライスキャニオン国立公園 -アメリカ-

みなさんこんにちは🌚

GWは魔の1日バイト9連勤を果たしたブルーノです。今年のGWは天気もそんなによくなかったので遊びにはどっちみち行けなかったから良いんですけどね😠😭

では早速作っていきましょう🌻

今回はタイトルにもある通りゼルダっぽいゲームのタイトル画面を実装してみたいと思います。
ちなみにこんな感じ
www.youtube.com
特徴としては実際のマップを読み込んでおり、その上にタイトルメニューがあることですね。この形式の良いところは最初にマップデータを読み込むのでそこからゲームシーンに移ればマップのオブジェクトを隠したり一度消したりしなくて良いところだと思います。私からしてもこれは簡単だと思い、今回つくろうと思いました。

タイトルのUIの実装
タイトルとゲームスタートのボタンを作りたいと思います。例によってかめくめさんのサイトに良い記事があったのでこれを真似させていただきます。
gametukurikata.com
地味にこのサイトに貼ってある無料日本語フォントサイトのリンクが嬉しかったです。AssetStore有料だし日本語フォント少ないし🌝
f:id:covory10101101276:20190515111659p:plain
こんな感じにしました!!タイトルはどーしよーかなー

そしてGameStart()メソッドを持ったTitleSystemスクリプトを空のゲームオブジェクトにアタッチし、StartButtonに指定します

f:id:covory10101101276:20190515112048p:plain
このスクリプト
f:id:covory10101101276:20190515112110p:plain
適当なオブジェクトにアタッチし....
f:id:covory10101101276:20190515112138p:plain
StartButtonから呼び出す!
ただこれだけでは暗転するアニメーションだけでシーンが変わったりする機能は持っていません。そこで今度はシーン遷移の機能も実装します。今回のゼルダっぽいシーン遷移の方法の利点である先に建物等のロードを済ませるという作業は次のシーンにロードした建物たちを引き継ぐことでそのメリットを活かせます。ということで今のTitleスクリプトにその作業も追加しなければなりません。そこで、またかめくめ氏のこのページを参考にしました。
gametukurikata.com
データを残す方法としてシングルトンという方法を昔少し使ったのですが、いまいち覚えてなかったのでまた勉強です。
f:id:covory10101101276:20190515150336p:plain
シングルトンの中身
はい、というわけで10行目およびAwakeメソッドの中身がシングルトンの実装になります。
10行目で自身のスクリプトをstaticな形で宣言し、共用で使うオブジェクトを12行目のShareObjectに格納しておきます。
最初にテストシーンから起動すると10行目のシングルトンインスタンスには何も入っていないのでこのスクリプトが割り当てられ、25行目にあるように決められたオブジェクトたちをDontDestroyOnLoad()メソッドで壊されなくします。
この状態でこのスクリプトをもつテストシーンから同じくこのスクリプトを持ったオブジェクトがあるゲームシーンに遷移すると、staticな変数にもうインスタンスが割り当てられているということで23行目にあるように新しくAwake()を通ったゲームシーンの方のスクリプトは格納されている同じオブジェクトたちを削除し始めるんですね。おかげで各シーンに同じオブジェクトがあっても共存することなく、かつどのシーンからプレイしても同じ状況でプレイできるということですね。

要はこの唯一無二のインスタンスを保持するためのデザインパターンがシングルトンというようですね。
個人的に一つ気になったのは、ゲームシーンには一応全てのマップ用のオブジェクトが配置してあるわけですがAwake()メソッドを通る前に結局同じオブジェクトたちを一度シーンに作り出すのではないか?ということです。Awake()以前ならレンダリングもされていないから負荷はかからないのでしょうか。ここだけ少し疑問が残りました。

タイトル画面で動く背景
では最後に、タイトル画面のカメラワークを作りたいと思います。「時のオカリナ」から続く3Dゼルダはみんなタイトル画面で実際のマップを使っているのが特徴ですよね。時にRTAやTASでそれが悪用されることもありますが...
カメラワークの作り方はこちらのサイトを参考にしました。
sirohood.exp.jp
動画付きでわかりやすい!!シロフードさんありがとう!!😽
こうして...

f:id:covory10101101276:20190515170313p:plain
できた!!
画像なのでわかりにくいですが、ちゃんとタイトルメニューの後ろでカメラが町中を飛んでいます!!成功です!
今回はここまでにしておきます。、。、