8.11. ActionList Starter
このコンポーネントを使うと、自然なゲームプレイによってシーンが開始されたときや、セーブゲームファイルを読み込んだ結果として開かれたときに、<ActionLists>を実行することができます。
<Cutscene on start> と <Cutscene on load> フィールドを提供する <Scene Manager> でも同様のことが可能ですが、この方法を使用すると、その機能をプレハブに格納することができます。これは、同じプレハブの複数のインスタンスが、それぞれ独自の "開始ロジック" を持ち、シーン開始時に独自の ActionList を実行する必要がある場合に便利です。
<Player-switching> が有効な場合、プレイヤーキャラクターの変更によりシーンがロードされたときに、これを使用して ActionList を実行することも可能です。
PROTIP: リンク先のActionListは、このコンポーネントのRunActionList()メソッドを呼び出すことによっても実行することができます。
リンクされたActionListは、オプションで、時間をかけて自然に実行されるのではなく、瞬時に実行されるようにすることができます。これは<Cutscene skipping>と同様で、すべてのActionが1フレームで一度に実行される場合です。
実行するActionListが<parameters>を使用している場合、そのパラメータ値はこのコンポーネントのインスペクタで設定することができます。ActionListが<asset file>で、Can run multiple instances? がチェックされている場合、ActionListの複数のインスタンスを、それぞれ独自のパラメータ値で同時に実行することができます。
Adventure Creator 「CREATING A TITLE-SCREEN MENU 2」のDeepL翻訳
- 元ページ
-
前回のチュートリアルでは、ゲームのタイトル画面に特別なメニューを作成し、そこからプレイヤーがゲームを開始できるようにしました。しかし、このメニューを有効にすると、ゲームが一時停止してしまいます。この間は、ゲームを一時停止せずに動作させたほうがよいでしょう。そうすれば、シーンに美しいアニメーション効果を加えることができます。
タイトルメニューでゲームが一時停止しないようにするには、メニューのプロパティリストで<Pause game when enabled?>オプションのチェックをはずせばよいでしょう。
-
次に、<Options>と<Load>のメニューもタイトル画面からアクセスできるように、同じように変更します。
ただし、通常のゲームプレイ中に表示されるように設定されているメニュー(3Dデモのインベントリやインゲームメニューなど)も表示されるようになります。これらのメニューは、一時的にロックしておく必要があります。シーンの<OnStart>カットシーンに戻り、ロックしたい各メニューに<Menu Change state>を追加してください。
- また、プレイヤーが<New game>ボタンをクリックしたときに、これらのメニューのロックを解除する必要があります。<Begin new game>のActionListアセットを選択し、各メニューのロックを解除するActionを追加します。必ず<Scene Switch>アクションの前に重ねてください。
-
しかし、もっと大きな問題があります。OptionsメニューとLoad メニューが有効なときに、通常のゲームプレイがフリーズするようにしたいのです。この2つのメニューの複製をタイトル画面用に作成することもできますが、より良い方法は、いつでもゲームを一時停止できる「隠し」メニューを使用することです。
メニューマネージャで、<Create new menu>をクリックし、新しいメニューの名前を<Freeze>に設定します。Pause game when enabled?> と、重要なことですが - <Ignore Cursor clicks?> にチェックを入れてください。これで、プレイヤーが不用意にクリックできないようになります。
-
要素を追加せず、メニューの<Background texture>を空白にすると、メニューは見えなくなり、その目的は単にゲームプレイをフリーズさせることになります。通常の Pause メニューがオンになっていてもゲームはフリーズするので、Options と Load メニューが有効なときだけ、このメニューを有効にする必要があります - シーンに TitleScreen がない限り。
このFreezeメニューを有効にするためのActionListを作成します。新しいActionListアセットを作成し、<Enter sub menu>という名前を付けます。これには「チェック」アクションが必要ですので、ActionList Editor ウィンドウでアセットを表示します。
デフォルトのアクションを
<Scene Check>に変更し、前のチュートリアルの<Exit sub menu>アセットで行ったのと同じシーンをチェックするように設定します。ここでは、<TitleScreen>シーンの中にいるかどうかを確認します。
- シーンにいないときにフリーズメニューを有効にしたいので、<If condition is not met>のソケットからワイヤーをドラッグして新しいアクションを作成します。もう一方のソケットが自動的に新しいActionにアタッチされる場合は、ポップアップを<Stop>に変更するだけです。新しいActionのタイプを<Menu Change state>に設定し、メニュー<Freeze>をONにするように設定します。
- このActionListは、OptionsまたはLoadメニューのいずれかがONになったときに実行されるようにしたいと思います。それぞれのメニューの <ActionList when turn on > フィールドにこのアセットを割り当てることで実現できます。
- また、Freezeメニューを再び無効にするために、<Exit sub menu>アセットを修正する必要があります。アセットを選択し、一時停止メニューがオンになった後にこれを実行するアクションを追加します。
- 通常のゲームプレイ中にオプションメニューやロードメニューが有効な場合、ゲームがフリーズするようになりましたが、タイトル画面ではフリーズしないようになりました。
- ***これで終わり***
Adventure Creator 「CREATING A TITLE-SCREEN MENU 1」のDeepL翻訳
- 元ページ
-
タイトル画面メニューは、ゲーム内のポーズメニューと似ていますが、特定のシーンに表示され、プレイヤーに「New game」をクリックしてから続きをするように促すものです。
しかし、ポーズメニューと同様に、オプション、ロード、終了オプションにアクセスできるようにしたいので、新しいタイトルメニューで動作させるために、これらのメニューにいくつかのロジックを追加する必要があります。このチュートリアルでは、Options、Load、Quit のボタンがある Pause メニューがあらかじめ用意されていると仮定します。3D Demo にはそれがあり、New Game Wizard で作成した Menu Manager にもあります(ただし、空白を作成した場合を除く)。
タイトルメニューは、ポーズメニューと似ているので、それをコピーして使います。メニューマネージャタブで、<Pause>メニューの横の歯車ボタンをクリックし、<コピー>をクリックします。
- メニューリストの下にある<Paste menu>ボタンがアクティブになります。これをクリックして、ポーズメニューの複製を作成し、新しいメニューの名前を<Pause(Copy)>から<Title>に変更します。
- このメニューは特定のシーンで表示させたいので、<Appear type>を<Manual>に変更します。<Enabled on start?>のボックスがチェックされていないことを確認します。
- このメニューはゲーム開始時に表示されるので、Saveボタンは必要ありません。メニューの要素一覧から、<SaveButton>の横の歯車ボタンをクリックし、<Delete>を選びます。
- 再開ボタンを新規ゲームボタンに変更する必要があるので、<ResumeButton>要素をクリックし、<NewGameButton>に名前を変更し、<Button text>を<New game>に変更します。最後に、<Click type>を<Run Action List>に設定します。
-
しかし、メニューはシーンとは独立して動作するため、カットシーンのようなシーンベースのActionListを提供することはできません。その代わりに、アセットファイルの中にActionListを作成します。
ゲームフォルダ内に新しいフォルダを作成し、MenuActionListsと名付けます。このフォルダの中で、プロジェクトウィンドウの<Create → Adventure Creator → ActionList>を選択して、Menu ActionListを作成します。
-
この新しいアセットに<Begin new game>という名前を付けます。
このActionListを使用して、タイトルメニューを閉じ、ゲームのオープニングシーンをロードします。このファイルのインスペクタで、<Menu Change state>アクションを作成します。<Menu to turn off>に<Title>を入力し、<Change type>を<Turn Off Menu>に設定します。
- 後ほど、このタイトルシーンが始まるときに、ポーズメニューをロックして、Escapeを押したときに表示されないようにします。そこで、今のうちにロックが解除されていることを確認しておきましょう。ロックを解除するための<Menu Change state>アクションを追加します。
- ***上記の説明
- ***上記の説明
- 次に、<Scene Switch>アクションを追加し、ゲームの導入シーンのシーン番号または名前を入力します。この例では、"Intro "という名前のシーンを読み込んでいます。
- タイトルメニューに戻り、NewGameButtonのActionListを、この新しいActionListとして実行するように設定します。
-
Optionsボタンや Loadボタンをクリックすると、該当するメニューがクロスフェードインします。しかし、オフにすると<Pause>メニューにクロスフェードバックするように設定されています。この動作を変更し、これらのメニューがTitleとPause menuの両方から呼び出されるようにする必要があります。
まず、オプションメニューから始めましょう。メニューを選択し、その<BackButton>要素を選択します。<Click type>を<Turn Off Menu>に変更し、<Do transition?>を有効にしてフェードアウトするようにします。
- ***ここは画像がリンク切れ***
-
メニューのプロパティのリストには、メニューがオフになったときに実行されるActionListを定義できることに注意してください。これを利用して、現在ロードされているシーンに応じて、「一時停止」または「タイトル」メニューをオンにすることにします。
先ほどと同じように、ActionListアセットを作成し、<Exit sub menu>という名前を付けます。インスペクタの上部にある <When running> フィールドを <Run In Background> に設定します。
-
このリストでクエリを作成するので、ActionList Editorウィンドウを使うと簡単です。アセットのインスペクタで<ActionList Editor>をクリックし、表示されたウィンドウをドッキングします。
デフォルトのActionを<Scene Check>に変更し、<Choose scene by>を<Name>に設定します。そして、タイトルメニューが使用されるシーンの名前を入力します(この場合、<TitleScreen>です)。
- もし、この条件が満たされていれば(つまり、現在TitleScreenのシーンにいる)、Titleメニューを有効にしたいと思います。そうでなければ、「一時停止」メニューを有効にします。2つの出力ソケット(アクションの右下)からワイヤーをドラッグして、2つの新しいアクションを作成し、それらを<Menu Change state>に設定します。
- アクションを編集して、タイトルメニューとポーズメニューをそれぞれオンにし、両方で<Fade?>にチェックを入れます。
- これでActionListが完成しましたので、アサインしてみましょう。<Menu Manager>に戻り、オプションメニューの<ActionList when turn off>を<Exit sub menu>に設定します。
-
次に、「Load」メニューにも同じことをする必要があります。ただし、ActionList アセットは再利用できます。Loadメニューの<BackButton要素>を選択し、<Click type>を<Turn Off Menu>に設定し、<Do transition?>をチェックします。
そして、<ActionList when turn off>を<Exit sub menu>に設定します。
これで、このタイトルメニューをシーンに表示する準備が整いました。シーンマネージャの <On start> の隣にある <Auto-create> をクリックして、ゲーム開始時に実行される新しいカットシーンを作成します。
- <Menu Change state>アクションを作成します。<Change type>を<Lock Menu>に設定し、<Menu to turn lock>欄に<Pause>と入力します。
-
これにより、「Menu」入力ボタン(デフォルトではEscapeにマップされています)を呼び出したときに、「一時停止」メニューが表示されないようにします。
次に、別の<Menu Change state>アクションを作成します。今回は、<Change type>を<Turn On Menu>のままにして、<Menu to turn on>ボックスに<Title>を入力します。
- これで、シーンが始まるとタイトルメニューが表示されるようになりました。先ほどの<Exit sub menu>アセットで参照した名前(この場合はTitleScreen)でシーンを保存してください - そうしないと、OptionsとPauseメニューが閉じたときに、正しいメニューにクロスフェードしないでしょう。
- ***ここでこのページは終わり***
- 続きは 「CREATING A TITLE-SCREEN MENU 2」へ
20220123AC
- NavMesh(ナビメッシュ)
- 自動で移動するNPCが作れるよ。
・マウスクリック地点にキャラを移動させる
こともできるよ
public serializefield の違い
- この記事がわかりやすかった
リベンジ夜ふかし」をやめられないメカニズム 記事気になる箇所
- 発達障害でない「グレーゾーン」とされる方にこそ読んでほしい
- 「周りの人がちゃんとできていること」を自分もできるようにならなければならないと思い込み、自分のやりたいことがわからなくなる。「やるべきこと」に縛られすぎてしまう
- オンとオフの切り替えが苦手な人は、どれだけ努力してもできるようにはならない
- そもそも「生活リズムを整えなきゃいけない」という思い込みのほうをなくすべきなんじゃないか
- もし睡眠不足を解消したいのであれば、「やりたいこと」を削るのではなく、「やるべきこと」のなかから「やらなくていいこと」を見つけて、睡眠時間を確保することを考えてみるのがおすすめ
Unityの[SerializeField]
- https://qiita.com/makopo/items/8ef280b00f1cc18aec91
- ここにくわしく書いている
- [SerializeField] int maxScore;
- とかって書くと
- Unity上のインスペターで編集できるようになる