【初心者向けチュートリアル】Boltを使用してUnityで簡単なゲームを作成する-9

こちらの記事では**制限時間の設定～シーンの遷移**を行います。

#制限時間の設定
前回のチュートリアルでアイテムの生成に関しては一通り終わりましたが、このままだと永遠にアイテムを拾い続けることが出来てしまいますね。
そのため今回はゲーム本編に制限時間をつけ、時間を過ぎたら強制的にシーンを遷移するようにしていきます。

まずは制限時間の設定です。
画面上部に現在の残り時間を表示するため、Canvas内に新しくTextを作成しましょう。
名前は「TimeText」とします。
![BoltGame - Game - PC, Mac & Linux Standalone - Unity 2019.3.1f1 Education _DX11_ 2020_07_13 14_36_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654796/f9476b46-ab6d-930e-9f7c-bd7f81f2f71a.png)
Inspectorは上の画像のように設定してください。
![BoltGame - Game - PC, Mac & Linux Standalone - Unity 2019.3.1f1 Education _DX11_ 2020_07_13 14_34_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654796/62f0f462-c1f4-18c3-99ff-433c37cd9fcb.png)
画面がこんな感じになっていたらOKです。

次は実際に制限時間をカウントしてテキストに反映させていきます。
先ほどのTimeTextに「TimeManager」という名前のグラフを作成しましょう。
作成出来たら、以下のようにノーツを繋いでください。
![BoltGame - Game - PC, Mac & Linux Standalone - Unity 2019.3.1f1 Education _DX11_ 2020_07_13 14_46_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654796/9f3efd1d-1e32-4861-ab26-871da4b32932.png)
Cooldownノーツは、Durationに設定した時間に沿って様々な処理を可能にするノーツです。今回は30秒に設定しました。
今回使用している部分をざっくり説明すると、
Tickから繋いだノーツは制限時間内であれば毎秒呼ばれます。
Completedは制限時間を過ぎたときに呼ばれます。
Remainingには現在の残り時間が格納されています。
Float:ToString()ノーツは入力した値をString型に変換して返します。
Scene Manager:Load Scene(Scene Name)ノーツはSceneNameに入力した名前のシーンをロードし、遷移します。

以上のことを踏まえると、
①Remainingの値をString型に変換し、毎秒更新して表示する。(SetTextに入力する値はString型＝文字列でないとエラーになるため変換が必要です)
②制限時間を過ぎたらResultシーンを読み込んで遷移する。
という流れになります。

では再生してみましょう…と言いたいところですが、今のまま再生してもResultシーンが存在していないためエラーが出てしまいます。

一旦制限時間の設定は終わりにして、次に移りましょう。

<details><summary>カウントダウンが減らない場合</summary><div>
まずはCooldownノーツが正常に動いているか確認しましょう。
TimeManagerで、以下のように繋いで実行してみてください。
![無題4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654796/fa33e293-6aa7-e0e4-7283-78a7d3722f4a.png)
![無題5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654796/3b0dd047-087b-e852-7839-10017a15062c.png)
コンソールに次々秒数が表示されればCooldownノーツが正常に動いています。
ここで表示されない方はグラフがしっかりとテキストにグラフがアタッチされているか、CooldownノーツのDurationに「30」と値を入力しているかなどを確認してみてください。

次にノーツが性格に繋げられているか確認しましょう。
CooldownノーツのTick→SetTextの順や、SetTextノーツのオレンジの丸にしっかりToStringを介してRemainingの値を繋げているかを今一度見直してみてください。
</div></details>

#シーンの遷移

先ほどのエラーを解消するため、遷移先のResultシーンを作成していきます。
Scenesフォルダ内で右クリック>Create>Sceneをクリックして新しいシーンを作成し、名前を「Result」にします。
作成出来たらダブルクリックしてResultシーンに移動しましょう。
![BoltGame - Game - PC, Mac & Linux Standalone - Unity 2019.3.1f1 Education _DX11_ 2020_07_13 15_12_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654796/0a89c8cb-a7a1-c7d7-4530-f4b205b01d37.png)
上のようなエラーが出る時がありますが、これは「現在のシーンを保存しないままシーンを移動すると変更点が保存されずに消えちゃうよ」といった内容のものなので、Saveを押しましょう。

移動したら、上部メニューFile>BuildSettingからウィンドウを開き、AddOpenSceneクリックします。
![BoltGame - Game - PC, Mac & Linux Standalone - Unity 2019.3.1f1 Education _DX11_ 2020_07_13 15_17_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654796/380ef2e8-7a0f-fcc1-110d-90adc73d5ea8.png)
すると上部のリストにScenes/Resultが追加されると思います。

Unityで遷移させたいシーンがあるときは以上のやり方でリストに登録しないといけません。
また、実際にゲームのexeファイルを起動したときはシーン名の横の数値が0になっているものが最初に表示されます。

ここまで設定が完了したらもう一度Gameシーンに戻って再生してみましょう。
![ダウンロード.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654796/18221fad-cc36-2161-bf01-2017f8a39b3a.gif)
制限時間を過ぎたらResultシーンに遷移するようになっていますね。

以上でシーンの遷移は完了です。

今回のチュートリアルはここまでです。お疲れさまでした！
次回は**リザルト画面の作成～ハイスコア表示**をやっていきます。
[【初心者向けチュートリアル】Boltを使用してUnityで簡単なゲームを作成する-10](https://qiita.com/mma/private/b8060dcec1743177c2a7)