江上宿六です。
ゲーム的な処理は終わったと言えど、調整する点はあったりします。
スコアの入り方を変えたり、Cubeの移動が斜めだと速いので正規化して正しい
移動速度にしたり、Sphereの乗ってる数によって更に床の落下速度を上げたり、
Sphereの発生間隔に波を持たせて後半ほど厳しくするとか、Cubeの落下処理を
まだ作っていないなど、様々です。
しかしそこはそれほど重要な点ではないというか、ゲームの処理的な所は
Unityの備忘録にはそれほど必要ではないわけです。 適当に調整しましょう。
関数の呼び出し方だとかはしっかり覚えておきたい所ですけども。
という事で今回はゲームオーバー処理としてシーンの移動を行います。
シーンの移動を行うには、もちろん移動先のシーンが必要になるので追加します。
プロジェクトビューのCreateからSceneを選択すると追加されるので
GameOverとでも名付けたら、ダブルクリックなどでシーンを開きます。
見慣れた空っぽな画面が表示されるので、UIを設置していきましょう。
これ以上無い適当なゲームオーバー画面です。 とりあえずこの状態で保存し、
シーンの移動が出来るか試しましょう。 まずはシーンをゲームに登録します。
メニューバーのFileからBuildSettingsを選択します。
ここはアプリケーションの出力の設定を行うことが出来る所で、ここにシーンを
登録することで組み込まれて使えるようになります。 AddOpenScenesで
現在開いているシーンを登録するか、アセットからドラッグ&ドロップで
登録する事が出来ます。 注意としてリストの1番上にあるシーンが最初に
呼び出されるシーンになるので、ゲーム部分を1番上にしておきましょう。
登録が出来たら次はシーンを移動する処理を書き込みます。 GameDirectorの
スクリプトを編集します。
UnityEngine.SceneManagementを定義する事で移動処理が行う事ができます。
SceneManager.LoadSceneにシーン名を渡してやる事でシーンが切り替わります。
今回はpublicの関数を作り、それを呼び出して移動するようにしています。
直で書いても良いとは思いますけど。
次にこれを呼び出す側、Planeのスクリプトを編集します。
y座標が0を下回ったらGameDirectorのMoveSceneを呼び、GameOverに行く
という風にしています。 この呼び出しをするオブジェクトがPlaneで良いのか、
GameDirectorがPlaneのy座標を取得して移動させるのが良いのか考えましたが
答えが出なかったのでこうしておきました。
実行してみると、多分無事にシーンが切り替わってくれたと思います。
次は逆にGameOver画面でクリックをするとゲームに戻れるようにしましょう。
空のオブジェクトとGameOverDirectorスクリプトを作り、記述します。
クリックするとシーン移動します。 結局こっちでは普通に呼び出してますね。
UnityEngine.SceneManagementは忘れないように。
実行してゲームオーバー画面でクリックするとゲームに戻ったと思います。
これでシーンの移動は出来ました。 あとは最終スコアを表示してやるだけです。
だけなんです。
という不穏な所で今回は終わりです。 次回に続きます。