ステートマシンにて、ステートのリンクにパラメーターを設定して、接続先に渡す機能がほしいです。
(もしくはそのような機能はありますか?)
例えば、A, B, Move ステートがあるとして、AからMove に接続する場合は、MoveのSpeedが1、BからMoveに接続する場合はSpeedが2と、パラメータのみ変えたい場合が多々あります。今だと、Speed1とSpeed2のMoveステートを作るか、ステート移行する前に、Moveに何らかの方法で直接Speedを設定するしか無いので、複雑化してしまいます。よろしくおねがいします。
ステートのリンクに、パラメータを設定出来る機能がほしい
Forum rules
The request period has ended.
The items required for the request are as follows.
要望受付は終了しました。
要望に必要な項目は以下の通りです。
The request period has ended.
The items required for the request are as follows.
- What are you trying to do with Arbor?
- Specifically, where are you inconvenient and in trouble?
- What should I do to improve?
- We can not answer requests that do not know the detailed situation.
- We can not answer your request for specific problems in the specification of your project.
- We can not answer your request on Unity's specification issues.
- We do not guarantee the implementation of your request.
要望受付は終了しました。
要望に必要な項目は以下の通りです。
- Arborを使って何をしようとしているか。
- 具体的にどこが不便で困っているか。
- 改善するにはどうすればよいか。
- 詳しい状況がわからない要望については答えられません。
- ユーザー様のプロジェクトの仕様上の固有の問題に対する要望については答えられません。
- Unityの仕様上の問題に対する要望には答えられません。
- 要望の実装を必ずお約束するものではございません。
- caitsithware
- 管理人
- Posts: 507
- Joined: 2015/08/17 12:41
Re: ステートのリンクに、パラメータを設定出来る機能がほしい
ご要望ありがとうございます。
データの受け渡しについては、現状、ParameterContainerを介すかデータフローに流す方法があります。
ParameterContianer
マニュアル : ParameterContainer
例:
マニュアル : データフロー
例:
あくまで参考程度にしてください。
もしこれらの方法で問題があるようでしたら検討いたします。
データの受け渡しについては、現状、ParameterContainerを介すかデータフローに流す方法があります。
ParameterContianer
マニュアル : ParameterContainer
例:
- Aステートに入った時に、CalcParameterなどを使用してSpeedパラメータに1を設定。
- Bステートに入った時に、CalcParameterなどを使用してSpeedパラメータに2を設定。
- MoveステートではFlexibleFloatで宣言したSpeedフィールドにSpeedパラメータを設定。
マニュアル : データフロー
例:
- Aステートから遷移する直前にOutputSlotFloatに1を出力し遷移。
- Bステートから遷移する直前にOutputSlotFloatに2を出力し遷移。
- MoveステートではInputSlotFloatの配列を持たせ、InputSlotFloat.updatedTimeを比較して一番新しいデータを使用する。
- グラフ上で、AステートとBステートからの出力スロットをMoveステートの入力スロットに接続
あくまで参考程度にしてください。
もしこれらの方法で問題があるようでしたら検討いたします。
Re: ステートのリンクに、パラメータを設定出来る機能がほしい
返答ありがとうございます。
たしかにその方法でパラメータ設定可能ですが、移行先でのみ使う変数(クラス変数など)を、リンクでパラメータ設定できれば、便利かと思いました。
ステートが増えてしまいますが、現状でも
A -> A用設定ステート -> Move
B -> B用設定ステート -> Move
なら、スクリプトをいじらなくても設定できそうなので、そちらで対応してみます。
よろしくおねがいします。
たしかにその方法でパラメータ設定可能ですが、移行先でのみ使う変数(クラス変数など)を、リンクでパラメータ設定できれば、便利かと思いました。
ステートが増えてしまいますが、現状でも
A -> A用設定ステート -> Move
B -> B用設定ステート -> Move
なら、スクリプトをいじらなくても設定できそうなので、そちらで対応してみます。
よろしくおねがいします。
- caitsithware
- 管理人
- Posts: 507
- Joined: 2015/08/17 12:41
Re: ステートのリンクに、パラメータを設定出来る機能がほしい
お返事ありがとうございます。
最終的には、便利かどうかは設定方法によるかと思いますが、
結局のところ、「どのパラメータにどんな値をどう設定するか」という課題がまずありますので、
現在のCalcParameterと設定機能的には同じとなり、単純に設定用にCalcParameterを追加しないといけないのが面倒、という話にも思えます。
ひとまず設定できる機能があるという点、スクリプトを自由にカスタマイズできる点を考慮すると、
StateLinkにまでパラメータ設定の固有の機能までは必要ないと思いますがどうでしょうか?
最終的には、便利かどうかは設定方法によるかと思いますが、
結局のところ、「どのパラメータにどんな値をどう設定するか」という課題がまずありますので、
現在のCalcParameterと設定機能的には同じとなり、単純に設定用にCalcParameterを追加しないといけないのが面倒、という話にも思えます。
ひとまず設定できる機能があるという点、スクリプトを自由にカスタマイズできる点を考慮すると、
StateLinkにまでパラメータ設定の固有の機能までは必要ないと思いますがどうでしょうか?
Re: ステートのリンクに、パラメータを設定出来る機能がほしい
設定に、CalcParameterを追加して 接続先にも何かしらの処理が必要になるなら、現状と同じになるので必要性は低そうです。
何もいじらず、接続先の変数を変更できるのであれば、あるなら便利ですね。
現状でもなんとかなるので、可能であればってレベルで大丈夫です。
ありがとうございました。
何もいじらず、接続先の変数を変更できるのであれば、あるなら便利ですね。
現状でもなんとかなるので、可能であればってレベルで大丈夫です。
ありがとうございました。
- caitsithware
- 管理人
- Posts: 507
- Joined: 2015/08/17 12:41
Re: ステートのリンクに、パラメータを設定出来る機能がほしい
今後の拡張性も考え、遷移時処理用スクリプトをStateLinkに持たせられるようにする
(そこにCalcParameterと同等のスクリプトも組み込みで提供)
ということであれば最大限の便利さを提供できそうですが、
そうではなく、単にStateLinkにパラメータを設定できるだけの機能があるとCalcParameter追加する手間が省けて便利
(逆に言うと遷移時スクリプト機能はいらない)
という話であれば、申し訳ありませんが、現状の方法での対応をお願いいたします。
また、処理+遷移用スクリプトを作成し、遷移前にパラメータを設定するようにするのはいかがでしょうか。
処理ごとにスクリプトを書く手間はありますが、1度作ってしまえばCalcParameterを毎度追加する手間よりかは楽になるかと思います。
もしスクリプトの作成方法やパラメータへの設定方法がわからないなどありましたら
質問フォーラムで聞いていただければ可能な限りサポートいたしますのでよろしくお願いいたします。
(そこにCalcParameterと同等のスクリプトも組み込みで提供)
ということであれば最大限の便利さを提供できそうですが、
そうではなく、単にStateLinkにパラメータを設定できるだけの機能があるとCalcParameter追加する手間が省けて便利
(逆に言うと遷移時スクリプト機能はいらない)
という話であれば、申し訳ありませんが、現状の方法での対応をお願いいたします。
また、処理+遷移用スクリプトを作成し、遷移前にパラメータを設定するようにするのはいかがでしょうか。
処理ごとにスクリプトを書く手間はありますが、1度作ってしまえばCalcParameterを毎度追加する手間よりかは楽になるかと思います。
もしスクリプトの作成方法やパラメータへの設定方法がわからないなどありましたら
質問フォーラムで聞いていただければ可能な限りサポートいたしますのでよろしくお願いいたします。