二代目備忘録スマートフォン用の表示で見る二代目備忘録2018-07-27Unity備忘録20頁目「シーンの切り替え1」Unity江上宿六です。ゲーム的な処理は終わったと言えど、調整する点はあったりします。スコアの入り方を変えたり、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は忘れないように。実行してゲームオーバー画面でクリックするとゲームに戻ったと思います。これでシーンの移動は出来ました。あとは最終スコアを表示してやるだけです。いう不穏な所で今回は終わりです。