二代目備忘録

適当に勉強した事を忘れないように講座風に書き留めたりするブログ。

Unity備忘録20頁目「シーンの切り替え1」

江上宿六です。

 

ゲーム的な処理は終わったと言えど、調整する点はあったりします。

スコアの入り方を変えたり、Cubeの移動が斜めだと速いので正規化して正しい

移動速度にしたり、Sphereの乗ってる数によって更に床の落下速度を上げたり、

Sphereの発生間隔に波を持たせて後半ほど厳しくするとか、Cubeの落下処理を

まだ作っていないなど、様々です。

 

しかしそこはそれほど重要な点ではないというか、ゲームの処理的な所は

Unityの備忘録にはそれほど必要ではないわけです。 適当に調整しましょう。

関数の呼び出し方だとかはしっかり覚えておきたい所ですけども。

 

という事で今回はゲームオーバー処理としてシーンの移動を行います。

シーンの移動を行うには、もちろん移動先のシーンが必要になるので追加します。

プロジェクトビューのCreateからSceneを選択すると追加されるので

GameOverとでも名付けたら、ダブルクリックなどでシーンを開きます。

見慣れた空っぽな画面が表示されるので、UIを設置していきましょう。

f:id:y6yegami:20180723094921p:plain

これ以上無い適当なゲームオーバー画面です。 とりあえずこの状態で保存し、

シーンの移動が出来るか試しましょう。 まずはシーンをゲームに登録します。

メニューバーのFileからBuildSettingsを選択します。

f:id:y6yegami:20180723095544p:plain

ここはアプリケーションの出力の設定を行うことが出来る所で、ここにシーンを

登録することで組み込まれて使えるようになります。 AddOpenScenesで

現在開いているシーンを登録するか、アセットからドラッグ&ドロップで

登録する事が出来ます。 注意としてリストの1番上にあるシーンが最初に

呼び出されるシーンになるので、ゲーム部分を1番上にしておきましょう。

 

登録が出来たら次はシーンを移動する処理を書き込みます。 GameDirectorの

スクリプトを編集します。

f:id:y6yegami:20180723100317p:plain

UnityEngine.SceneManagementを定義する事で移動処理が行う事ができます。

f:id:y6yegami:20180723100449p:plain

SceneManager.LoadSceneにシーン名を渡してやる事でシーンが切り替わります。

今回はpublicの関数を作り、それを呼び出して移動するようにしています。

直で書いても良いとは思いますけど。

 

次にこれを呼び出す側、Planeのスクリプトを編集します。

f:id:y6yegami:20180723100825p:plain

y座標が0を下回ったらGameDirectorのMoveSceneを呼び、GameOverに行く

という風にしています。 この呼び出しをするオブジェクトがPlaneで良いのか、

GameDirectorがPlaneのy座標を取得して移動させるのが良いのか考えましたが

答えが出なかったのでこうしておきました。

 

実行してみると、多分無事にシーンが切り替わってくれたと思います。

次は逆にGameOver画面でクリックをするとゲームに戻れるようにしましょう。

空のオブジェクトとGameOverDirectorスクリプトを作り、記述します。

f:id:y6yegami:20180723101643p:plain

クリックするとシーン移動します。 結局こっちでは普通に呼び出してますね。

UnityEngine.SceneManagementは忘れないように。

 

実行してゲームオーバー画面でクリックするとゲームに戻ったと思います。

これでシーンの移動は出来ました。 あとは最終スコアを表示してやるだけです。

だけなんです。

 

という不穏な所で今回は終わりです。 次回に続きます。