アクションノードに付与したデコレータースクリプトが引き起こすOver 1000 interruptsの件について

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

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.

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

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.
Guest

アクションノードに付与したデコレータースクリプトが引き起こすOver 1000 interruptsの件について

Post by Guest » 2021/06/14 08:12

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

題意通り、ビヘイビアツリーにてアクションノードに付与したデコレーターが"Over 10000 interrupts"と警告を出してフリーズします。

何度も重い判定処理をSelectorが反復していることが原因だと思いますが、対処が思いつきませんでした。
判定処理は扇の範囲内に指定のオブジェクトが入っているかどうかを判定しています。

こういったケースでは何かいい対処はないでしょうか。

回答に際して不明瞭な点があれば指摘していただければと思います

User avatar
caitsithware
管理人
Posts: 454
Joined: 2015/08/17 12:41

Re: アクションノードに付与したデコレータースクリプトが引き起こすOver 1000 interruptsの件について

Post by caitsithware » 2021/06/14 08:35

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

"Over 10000 interrupts"は1フレーム中に10000回(実際にはDebugInfiniteLoopSettings.maxLoopCount)以上割り込みされた場合に表示される警告となっており、意図せずその回数分割り込まれているのでしたら実質無限ループになっている可能性が高いです。

例えば
  1. 「扇の範囲内に指定のオブジェクトが入っているかどうか」の条件に合致してアクションノードが実行される。
  2. アクションノードが即時成功/失敗を返す。
  3. 優先度の低いノード(グラフ上で見て右側)へ遷移される。
  4. 優先度の高い「扇の範囲内に指定のオブジェクトが入っているかどうか」が再評価され条件が一致すれば再実行される
  5. 1フレーム中にこれが何度も繰り返される
という状況が考えられるので、範囲内に指定のオブジェクトが入っている間はアクションノードから抜けないようにする必要があります。

アクションノードの成功/失敗条件を見直し、即時成功/失敗を返さないように1フレーム以上アクションノードが実行されるようにしてみてください。

Post Reply