SendTriggerが無視される(?)件に関しての質問

Here is the forum to do the questions about how to use to Arbor developer.
Attention point:
  • We can not answer your questions about your project specific issues.
  • We can not answer your questions on Unity's specification issues.
  • Please check Arbor Documentation and ask a question if you still don't know how to use it. If the desired function is not described in the document, it is highly possible that the function does not exist from the beginning, so go to the request forum.

ここは、Arbor開発者へ使い方に関する質問を行うフォーラムです。
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。
  • Arbor Documentationを確認の上、それでも使い方がわからない場合にご質問ください。欲しい機能の記載がドキュメントにない場合は機能が元から存在しない可能性が高いので要望フォーラムへ。

Forum rules
Here is the forum to do the questions about how to use to Arbor developer.
Attention point:
  • We can not answer your questions about your project specific issues.
  • We can not answer your questions on Unity's specification issues.
  • Please check Arbor Documentation and ask a question if you still don't know how to use it. If the desired function is not described in the document, it is highly possible that the function does not exist from the beginning, so go to the request forum.

ここは、Arbor開発者へ使い方に関する質問を行うフォーラムです。
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。
  • Arbor Documentationを確認の上、それでも使い方がわからない場合にご質問ください。欲しい機能の記載がドキュメントにない場合は機能が元から存在しない可能性が高いので要望フォーラムへ。
sugkaz

SendTriggerが無視される(?)件に関しての質問

Post by sugkaz »

お世話になっております。

ArborFSMをセットした非アクティブのゲームオブジェクト(以下A)を、別のスクリプトからアクティブ状態に変更後、すぐにAに対してSendTriggerした場合、トリガーが無視されているようなのですが、これは仕様でしょうか?
スクリプト的には、以下のような感じです。

gameobjectA.SetActive(true);
gameobjectA.GetComponent<ArborFSM>().SendTrigger("trigger");

ArborFSMの初期化中にトリガーを送ってしまって無視されているのかな…と想像しているのですが、そもそもの使い方を間違えている可能性もあるので、一応質問いたします。
また、アクティブ化直後でも正常にトリガーを送れる方法がもしありましたら、ご教示頂けますと幸いです。
User avatar
caitsithware
管理人
Posts: 493
Joined: 2015/08/17 12:41

Re: SendTriggerが無視される(?)件に関しての質問

Post by caitsithware »

Arborのご利用ありがとうございます。

アクティブ化された瞬間で再生開始していないArborFSMへのSendTriggerに関しては、以下の条件に合致する場合にのみ一時的にため込み再生開始後にトリガーが送られるようになります。
  1. Arborバージョン3.8.0以降
  2. ArborFSMのisActiveAndEnabledがtrue
    > GameObjectもArborFSMもアクティブである
  3. ArborFSMのplayStateがPlayState.Playing以外
    > 再生していない
  4. ArborFSMのplayOnStartがtrue
    > ArborFSMのStart()のなかで再生開始する
  5. ArborFSMのisStartedがfalse
    > ArborFSMのStart()がまだ呼ばれていない
  6. SendTrigger呼び出しと再生開始が同一フレーム
    > 時間差があるとややこしいため、同一フレームに制限
この機能自体はゲーム開始直後や複数のFSMが同時にアクティブ化された場合の初手SendTrigger/TriggerTransitionを通るようにするための暫定的なものとなっております。
特に「SendTrigger呼び出しと再生開始が同一フレーム」に関しては、Unityの仕様(Start()が呼び出されるのはUpdate()の直前)の関係で1フレーム遅延が入ってしまう場合もありえますので、単一のFSMをアクティブ化した際のSendTriggerが通るかは不定です。

確実にトリガーを送るには再生開始していれば大丈夫です。
例えばSetActive(true)→Play()→SendTrigger("trigger")の順に呼び出すようにしてみてください。
Guest

Re: SendTriggerが無視される(?)件に関しての質問

Post by Guest »

ご返信ありがとうございます。

>確実にトリガーを送るには再生開始していれば大丈夫です。
>例えばSetActive(true)→Play()→SendTrigger("trigger")の順に呼び出すようにしてみてください。

こちらの方法で、問題なくトリガーを送れるようになりました。
素早いご対応、ありがとうございました!
Post Reply