Page 1 of 1
Game ObjectがActiveになる度にBehaviour Treeを再生したい
Posted: 2024/02/11 11:27
by kohaku
Behaviour TreeコンポーネントのPlay On Startにチェックを入れると、
Behaviour TreeがアタッチされたGame ObjectがActiveになったときにBehaviour Treeが再生されるのですが、
再生されるのはGame Objectが初めてActiveになった時だけです。
Game Objectが初めてActiveになった時毎回Behaviour Treeを再生するにはどうすればいいのでしょうか?
一応Restart On Finishにチェックを入れれば、Game ObjectがActiveになっている間
ずっとBehaviour Treeが再生されるので似たようなことはできるのですが、
Game Objectが初めてActiveになった時に一回だけBehaviour Treeを再生したいです。
Re: Game ObjectがActiveになる度にBehaviour Treeを再生したい
Posted: 2024/02/11 11:41
by kohaku
先ほどの投稿を訂正します。
誤: Game Objectが初めてActiveになった時に一回だけBehaviour Treeを再生したいです。
正: Game Objectが毎回Activeになった時に毎回一回だけBehaviour Treeを再生したいです。
Re: Game ObjectがActiveになる度にBehaviour Treeを再生したい
Posted: 2024/02/11 12:11
by caitsithware
Play On StartはMonoBehaviourのStart()メソッドで再生開始するフラグとなっており、初回以外にアクティブになった際に再生されないのは仕様です。
アクティブになった際に再生開始する設定はないため、再生したい時にNodeGraph.Play()メソッドを呼び出してください。
例えば以下のようなスクリプトを作成しBehaviourTreeと同じGameObjectに設定するとアクティブになった際に再生開始できます。
Code: Select all
using UnityEngine;
using Arbor;
public class PlayOnEnable : MonoBehaviour
{
private void OnEnable()
{
var nodeGraph = gameObject.GetComponent<NodeGraph>();
if (nodeGraph != null && nodeGraph.isActiveAndEnabled)
{
nodeGraph.Stop(); // 最初から再生するために一度停止する
nodeGraph.Play();
}
}
}
なおこのスクリプトをそのまま使用する場合、最初からアクティブなGameObjectにはPlay On Startにチェックを入れてください。
Re: Game ObjectがActiveになる度にBehaviour Treeを再生したい
Posted: 2024/02/12 16:56
by kohaku
ご回答ありがとうございます。
教えていただいたスクリプトを使ってみたのですが、
一度GameObjectを非Activeにしてから再度GameObjectをActiveにした場合、OnEnable()は呼ばれるのですが、
nodeGraph.isActiveAndEnabledがfalseになっていて再生されませんでした。
Re: Game ObjectがActiveになる度にBehaviour Treeを再生したい
Posted: 2024/02/12 19:00
by kohaku
Project SettingsのScript Execution OrderでPlayOnEnableスクリプトの実行順を後ろにすると
PlayOnEnableスクリプトが期待通りに動作することがわかりました。
Re: Game ObjectがActiveになる度にBehaviour Treeを再生したい
Posted: 2024/02/12 23:37
by caitsithware
確かに実行順は明示しない限り不確定なので、場合によって動いたり動かなかったりしますね。
実行順を設定することで動作したということで良かったです。
またこれは参考コードですので動作保証は致しません。必要に応じて外部からPlayメソッドを呼ぶなども検討してみてください。
Re: Game ObjectがActiveになる度にBehaviour Treeを再生したい
Posted: 2024/02/15 19:09
by kohaku
了解しました。
ご対応ありがとうございました。