‫こんにちは､ ようこそ｡
‫この講義では､ 弾を使い切ったときに､ 自動的に現在のレベルを再開するようにする方法を説明します｡
‫5秒の間をおいて､ 飛び込みで見てみましょう｡
‫だから､ このゲームで今特に面白くない要素としては､ 弾薬を使い切ると行き止まりになってしまうことです｡
‫再挑戦はできない｡
‫それ以外のことはできません｡
‫別のレベルに進むことはできない｡
‫さて､ これを解決する方法は､ 現在のレベルを再読み込みできるようにすることです｡
‫その方法は､ ブループリントの特別なノードを使用することです｡
‫つまり､ イベントグラフで右クリックすると､ レベル設計図が開き､ イベントグラフで右クリックすることになります｡
‫オープンレベルを検索することができます｡
‫そして､ ここには2つのオプションがあります｡
‫名前によるオープンレベルとオブジェクトリファレンスによるオープンレベルがあります｡
‫オープンレベルを名指しで使える
‫ここでは､ レベルを再読み込みするため､ 明らかに副作用のあるノードがあり､ 入力があり､
‫それはここではレベル名です｡
‫さて､ 現在のレベル名はどうやって手に入れるのでしょうか？
‫入力すればいいのですが､ 将来のある時点で誤ってこのレベルの名前を変えてしまったらどうしましょう？
‫右クリックで現在のレベル名を取得することもできます｡
‫面白いことに､ こちらは純粋な機能ではありません｡
‫理由は全く分からない｡
‫そうあるべきように見えるからです｡
‫そして､ この2つの型が異なっていても､ 一方は文字列を返し､ もう一方はname型の何かを必要とすることができるのです｡
‫実は､ 文字列と名前の変換はとても簡単にできるので､ 戻り値から入力値へドラッグすれば､
‫自動的に変換ノードが作成されるのです｡
‫また､ この2つの間に実行ピンを接続する必要があるので､ 現在のレベル名の変換を取得し､
‫レベルを開くことにします｡
‫さて､ これをやりたいのはいつなのか｡
‫現在は､ キーイベントかビギンプレイのどちらかですべてが行われていますが､ もう一つの選択肢があります｡
‫ルートイベントグラフの中に､ ディレイノードと呼ばれる特別なノードを作ることができます｡
‫弾切れが押された後､ この実行ピンを引き抜き､ 遅延を検索します｡
‫そして､ 時計がついた特別な種類のノードを運んでくるのがわかると思います｡
‫そしてこれは､ 関数が終了した後に即座に出力が行われるのではなく､ 一定時間後に出力が行われることを意味します｡
‫ここでデュレーションを入力し､ 例えば5秒とすることができます｡
‫そこで､ 印刷文字列を更新して､ 弾切れで5秒後に再起動すると書いて､ ドット､ ドット､ ドットにします｡
‫そして､ レベルを再起動させるコードを､ 出力であるdelayノードのcompletedノードに差し込めばいいのです｡
‫今プレイしてみると､ 弾薬をすべて使い果たし､ 5秒後にリスタートすると表示され､
‫5秒後にドーンとレベルがリスタートしているのがわかると思います｡
‫この講義の小さな課題は､ 先ほど作成したノードから､ 現在のレベル､ 名前､ オープンレベルを取得する関数を抽出することです｡
‫そして､ この機能にふさわしい名前を考えてほしいというのが私の課題です｡
‫ビデオを一時停止して､ 試してみてください｡
‫なるほど｡
‫お帰りなさい｡
‫まあ､ そういうことなのでリスタートレベルということにしておきます｡
‫そこで､ 右クリックでcollapse to functionしてrestart levelと呼ぶと､ 現在の入力で問題ない｡
‫レベルを再起動させる副作用があるので､ 純粋である必要はない｡
‫だから､ とにかくピュアであってほしくないのです｡
‫というわけで､ これでおしまいです｡
‫ノードを少し整理して､ テストノードを削除し､ テスト関数を削除するには､ ブループリントで右クリックして削除を押します｡
‫そして､ 私たちのゲームができることを､ 非常に高いレベルで正確に記述した､ 凝縮された小さな設計図のグラフを手に入れました｡
‫だから､ その結果には満足しているんだ｡
‫良いゲームのループができたと感じています｡ また次の講義でお会いしましょう｡