Unityの覚書

個人的にUnityでやった記録しときたいことを書いておきます

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?>オプションのチェックをはずせばよいでしょう。

  • https://adventurecreator.org/sites/default/files/2020-07/1_11.png

  • 次に、<Options>と<Load>のメニューもタイトル画面からアクセスできるように、同じように変更します。

    ただし、通常のゲームプレイ中に表示されるように設定されているメニュー(3Dデモのインベントリやインゲームメニューなど)も表示されるようになります。これらのメニューは、一時的にロックしておく必要があります。シーンの<OnStart>カットシーンに戻り、ロックしたい各メニューに<Menu Change state>を追加してください。

  • https://adventurecreator.org/sites/default/files/2020-07/3_11.png

  • また、プレイヤーが<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>シーンの中にいるかどうかを確認します。

  • https://adventurecreator.org/sites/default/files/2020-07/title2-actions1.png

  • シーンにいないときにフリーズメニューを有効にしたいので、<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>アセットを修正する必要があります。アセットを選択し、一時停止メニューがオンになった後にこれを実行するアクションを追加します。
  • https://adventurecreator.org/sites/default/files/2020-11/title2-actions4.png

  • 通常のゲームプレイ中にオプションメニューやロードメニューが有効な場合、ゲームがフリーズするようになりましたが、タイトル画面ではフリーズしないようになりました。
  • ***これで終わり***

Adventure Creator 「CREATING A TITLE-SCREEN MENU 1」のDeepL翻訳

  • 元ページ
  • タイトル画面メニューは、ゲーム内のポーズメニューと似ていますが、特定のシーンに表示され、プレイヤーに「New game」をクリックしてから続きをするように促すものです。

    しかし、ポーズメニューと同様に、オプション、ロード、終了オプションにアクセスできるようにしたいので、新しいタイトルメニューで動作させるために、これらのメニューにいくつかのロジックを追加する必要があります。このチュートリアルでは、Options、Load、Quit のボタンがある Pause メニューがあらかじめ用意されていると仮定します。3D Demo にはそれがあり、New Game Wizard で作成した Menu Manager にもあります(ただし、空白を作成した場合を除く)。

    タイトルメニューは、ポーズメニューと似ているので、それをコピーして使います。メニューマネージャタブで、<Pause>メニューの横の歯車ボタンをクリックし、<コピー>をクリックします。

    https://adventurecreator.org/sites/default/files/2020-07/1_19_0.png

  • メニューリストの下にある<Paste menu>ボタンがアクティブになります。これをクリックして、ポーズメニューの複製を作成し、新しいメニューの名前を<Pause(Copy)>から<Title>に変更します。
  • このメニューは特定のシーンで表示させたいので、<Appear type>を<Manual>に変更します。<Enabled on start?>のボックスがチェックされていないことを確認します。

    https://adventurecreator.org/sites/default/files/2020-07/2_22_0.png

  • このメニューはゲーム開始時に表示されるので、Saveボタンは必要ありません。メニューの要素一覧から、<SaveButton>の横の歯車ボタンをクリックし、<Delete>を選びます。

    https://adventurecreator.org/sites/default/files/2020-07/3_22_0.png

  • 再開ボタンを新規ゲームボタンに変更する必要があるので、<ResumeButton>要素をクリックし、<NewGameButton>に名前を変更し、<Button text>を<New game>に変更します。最後に、<Click type>を<Run Action List>に設定します。

    https://adventurecreator.org/sites/default/files/2020-07/4_22_0.png

  • しかし、メニューはシーンとは独立して動作するため、カットシーンのようなシーンベースのActionListを提供することはできません。その代わりに、アセットファイルの中にActionListを作成します。

    ゲームフォルダ内に新しいフォルダを作成し、MenuActionListsと名付けます。このフォルダの中で、プロジェクトウィンドウの<Create → Adventure Creator → ActionList>を選択して、Menu ActionListを作成します。

    https://adventurecreator.org/sites/default/files/2020-07/2b_0.png

  • この新しいアセットに<Begin new game>という名前を付けます。

    このActionListを使用して、タイトルメニューを閉じ、ゲームのオープニングシーンをロードします。このファイルのインスペクタで、<Menu Change state>アクションを作成します。<Menu to turn off>に<Title>を入力し、<Change type>を<Turn Off Menu>に設定します。

    https://adventurecreator.org/sites/default/files/2020-07/1c.png

  • 後ほど、このタイトルシーンが始まるときに、ポーズメニューをロックして、Escapeを押したときに表示されないようにします。そこで、今のうちにロックが解除されていることを確認しておきましょう。ロックを解除するための<Menu Change state>アクションを追加します。
    • ***上記の説明

       

      の画像が文言とあっていない気がする・・・・***
  • 次に、<Scene Switch>アクションを追加し、ゲームの導入シーンのシーン番号または名前を入力します。この例では、"Intro "という名前のシーンを読み込んでいます。
  • タイトルメニューに戻り、NewGameButtonのActionListを、この新しいActionListとして実行するように設定します。
  • https://adventurecreator.org/sites/default/files/2020-07/7_15_0.png

  • Optionsボタンや Loadボタンをクリックすると、該当するメニューがクロスフェードインします。しかし、オフにすると<Pause>メニューにクロスフェードバックするように設定されています。この動作を変更し、これらのメニューがTitleとPause menuの両方から呼び出されるようにする必要があります。

    まず、オプションメニューから始めましょう。メニューを選択し、その<BackButton>要素を選択します。<Click type>を<Turn Off Menu>に変更し、<Do transition?>を有効にしてフェードアウトするようにします。

  • ***ここは画像がリンク切れ***
  • メニューのプロパティのリストには、メニューがオフになったときに実行されるActionListを定義できることに注意してください。これを利用して、現在ロードされているシーンに応じて、「一時停止」または「タイトル」メニューをオンにすることにします。

    先ほどと同じように、ActionListアセットを作成し、<Exit sub menu>という名前を付けます。インスペクタの上部にある <When running> フィールドを <Run In Background> に設定します。

  • https://adventurecreator.org/sites/default/files/2020-07/1_42.png

  • このリストでクエリを作成するので、ActionList Editorウィンドウを使うと簡単です。アセットのインスペクタで<ActionList Editor>をクリックし、表示されたウィンドウをドッキングします。

    デフォルトのActionを<Scene Check>に変更し、<Choose scene by>を<Name>に設定します。そして、タイトルメニューが使用されるシーンの名前を入力します(この場合、<TitleScreen>です)。

  • https://adventurecreator.org/sites/default/files/2020-07/title-actions1.png

  • もし、この条件が満たされていれば(つまり、現在TitleScreenのシーンにいる)、Titleメニューを有効にしたいと思います。そうでなければ、「一時停止」メニューを有効にします。2つの出力ソケット(アクションの右下)からワイヤーをドラッグして、2つの新しいアクションを作成し、それらを<Menu Change state>に設定します。
  • https://adventurecreator.org/sites/default/files/2020-07/title-actions2.png

  • アクションを編集して、タイトルメニューとポーズメニューをそれぞれオンにし、両方で<Fade?>にチェックを入れます。
  • https://adventurecreator.org/sites/default/files/2020-07/title-actions3.png

  • これでActionListが完成しましたので、アサインしてみましょう。<Menu Manager>に戻り、オプションメニューの<ActionList when turn off>を<Exit sub menu>に設定します。
  • https://adventurecreator.org/sites/default/files/2020-07/7_6_0.png

  • 次に、「Load」メニューにも同じことをする必要があります。ただし、ActionList アセットは再利用できます。Loadメニューの<BackButton要素>を選択し、<Click type>を<Turn Off Menu>に設定し、<Do transition?>をチェックします。

    そして、<ActionList when turn off>を<Exit sub menu>に設定します。

    これで、このタイトルメニューをシーンに表示する準備が整いました。シーンマネージャの <On start> の隣にある <Auto-create> をクリックして、ゲーム開始時に実行される新しいカットシーンを作成します。

  • https://adventurecreator.org/sites/default/files/2020-07/title-onstart.png

  • <Menu Change state>アクションを作成します。<Change type>を<Lock Menu>に設定し、<Menu to turn lock>欄に<Pause>と入力します。
  • https://adventurecreator.org/sites/default/files/2020-07/title-actions4.png

  • これにより、「Menu」入力ボタン(デフォルトではEscapeにマップされています)を呼び出したときに、「一時停止」メニューが表示されないようにします。

    次に、別の<Menu Change state>アクションを作成します。今回は、<Change type>を<Turn On Menu>のままにして、<Menu to turn on>ボックスに<Title>を入力します。

  • https://adventurecreator.org/sites/default/files/2020-07/title-actions5.png

  • これで、シーンが始まるとタイトルメニューが表示されるようになりました。先ほどの<Exit sub menu>アセットで参照した名前(この場合はTitleScreen)でシーンを保存してください - そうしないと、OptionsとPauseメニューが閉じたときに、正しいメニューにクロスフェードしないでしょう。
  • ***ここでこのページは終わり***
    • 続きは 「CREATING A TITLE-SCREEN MENU 2」へ

 

 

20220123AC

public serializefield の違い

  • ekulabo.com

  • この記事がわかりやすかった
    • public serializefield のどちらもインスペクタで値を変えられるのは同じ
    • Unity的にはマニュアルにはほぼpublicでいいんじゃない?と書いている
    • オブジェクト指向的にはserializefieldのほうがよさげ

リベンジ夜ふかし」をやめられないメカニズム 記事気になる箇所

  • 発達障害の人ほど「リベンジ夜ふかし」をやめられないメカニズム | だから、この本。 | ダイヤモンド・オンライン

  • 発達障害でない「グレーゾーン」とされる方にこそ読んでほしい
  • 「周りの人がちゃんとできていること」を自分もできるようにならなければならないと思い込み、自分のやりたいことがわからなくなる。「やるべきこと」に縛られすぎてしまう
  • オンとオフの切り替えが苦手な人は、どれだけ努力してもできるようにはならない
  • そもそも「生活リズムを整えなきゃいけない」という思い込みのほうをなくすべきなんじゃないか
  • もし睡眠不足を解消したいのであれば、「やりたいこと」を削るのではなく、「やるべきこと」のなかから「やらなくていいこと」を見つけて、睡眠時間を確保することを考えてみるのがおすすめ