恐れ入ります。
ゲーム中の会話の遷移をLogicToolkitでやろうとしておりまして、
「会話中の選択肢をGUIボタンで表示し、選択を待つノード」
をスクリプトで書こうとしています。
「選択を待ちたい」のでタスクコンポーネントスクリプトを書けばいいのかと思ったのですが
何点かわからないことがありました。
1.タスクコンポーネントスクリプトにて、とりあえずArborの感覚で選択肢の数だけOutputTransitionPortを作り、
どの選択肢ボタンが押されたかによって OnExecuteの中でport1.Transition()
などとして、それぞれの遷移先に遷移することはできました。
正規のreturn TaskStatus.Successなどで抜けていませんが、これは安全でしょうか?
2.もとからあるCompletedの出力ポートは使わないので消すことはできますか?
(Resultは消せました)
3.そもそもこういった用途でタスクコンポーネントを使う認識で良いのでしょうか。
何か別の方法はありますでしょうか。
TaskコンポーネントからのOutputTransitionPort出力について
- caitsithware
- 管理人
- Posts: 134
- Joined: 2024/03/26 01:56
Re: TaskコンポーネントからのOutputTransitionPort出力について
動作上は特に問題ないかと思います。
Completedポートを非表示にする機能については現在ありません。
TaskComponentは「何かを行って完了を待つこと」が主な用途になっています。
今回の場合ですと「選択肢を表示して選択されるのを待つ」という処理ですね。
想定している用途としては「選択肢表示から結果を出力する」までとし別途Switchノードなどで分岐することを想定しています。
ただ、選択肢=遷移先の場合は選択肢表示側と分岐側で2重でリストを組む手間なども発生しますので、TaskComponentの内部で分岐してしまったほうが良いのかもしれません。
他の方法としては、ServiceComponentで選択肢機能を実装しStateノードで使用する方法があります。
この組み合わせでは、ArborのStateBehaviourとほぼ同等機能を作成できます。