Page 1 of 1

TaskコンポーネントからのOutputTransitionPort出力について

Posted: 2025/07/30 06:09
by htf
恐れ入ります。

ゲーム中の会話の遷移をLogicToolkitでやろうとしておりまして、
「会話中の選択肢をGUIボタンで表示し、選択を待つノード」
をスクリプトで書こうとしています。

「選択を待ちたい」のでタスクコンポーネントスクリプトを書けばいいのかと思ったのですが
何点かわからないことがありました。

1.タスクコンポーネントスクリプトにて、とりあえずArborの感覚で選択肢の数だけOutputTransitionPortを作り、
どの選択肢ボタンが押されたかによって OnExecuteの中でport1.Transition()
などとして、それぞれの遷移先に遷移することはできました。
正規のreturn TaskStatus.Successなどで抜けていませんが、これは安全でしょうか?

2.もとからあるCompletedの出力ポートは使わないので消すことはできますか?
(Resultは消せました)

3.そもそもこういった用途でタスクコンポーネントを使う認識で良いのでしょうか。
何か別の方法はありますでしょうか。

Re: TaskコンポーネントからのOutputTransitionPort出力について

Posted: 2025/07/30 06:51
by caitsithware
htf wrote: 2025/07/30 06:09 1.タスクコンポーネントスクリプトにて、とりあえずArborの感覚で選択肢の数だけOutputTransitionPortを作り、
どの選択肢ボタンが押されたかによって OnExecuteの中でport1.Transition()
などとして、それぞれの遷移先に遷移することはできました。
正規のreturn TaskStatus.Successなどで抜けていませんが、これは安全でしょうか?
動作上は特に問題ないかと思います。
htf wrote: 2025/07/30 06:09 2.もとからあるCompletedの出力ポートは使わないので消すことはできますか?
(Resultは消せました)
Completedポートを非表示にする機能については現在ありません。
htf wrote: 2025/07/30 06:09 3.そもそもこういった用途でタスクコンポーネントを使う認識で良いのでしょうか。
何か別の方法はありますでしょうか。
TaskComponentは「何かを行って完了を待つこと」が主な用途になっています。
今回の場合ですと「選択肢を表示して選択されるのを待つ」という処理ですね。
想定している用途としては「選択肢表示から結果を出力する」までとし別途Switchノードなどで分岐することを想定しています。
ただ、選択肢=遷移先の場合は選択肢表示側と分岐側で2重でリストを組む手間なども発生しますので、TaskComponentの内部で分岐してしまったほうが良いのかもしれません。

他の方法としては、ServiceComponentで選択肢機能を実装しStateノードで使用する方法があります。
この組み合わせでは、ArborのStateBehaviourとほぼ同等機能を作成できます。