アクションノード等のインスペクターの情報からGizmoを変更したい

ここは、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.
zakimi
Posts: 2
Joined: 2021/06/09 12:59

アクションノード等のインスペクターの情報からGizmoを変更したい

Post by zakimi » 2021/06/09 13:04

表題通り、ノードの情報からGizmoを変更したいと考えております。

具体的には、視界機能を持つ(範囲に入ったらエージェントの視界に入る)デコレーターノードに与えたパラメータから視界を示す扇形を表示することを目指しております。

UnityEngineでやるような通常のEditor拡張をデコレータースクリプトに施したのですが、表示はできませんでした。

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

Re: アクションノード等のインスペクターの情報からGizmoを変更したい

Post by caitsithware » 2021/06/09 13:57

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

Gizmoを変更したいとのことですが具体的に試した方法の詳細がわかりませんので、いくつかできそうな方法を記載いたします。
  • MonoBehaviour.OnDrawGizmos
    Decoratorなど、ノードに使用できるスクリプトは全てMonoBehaviourから継承しているため、OnDrawGizmos()などのUnity標準機能が利用可能だと認識しています。
    ただし、実行時以外はenabledがfalseになるArborの仕様のため、その都合で無効なコンポーネントのGizmoが表示されないなどの問題はあるかと思います。
    もしOnDrawGizmos()を利用して問題のある場合は、Gizmo表示用コンポーネントを別途作成するなどの回避策も考えられますのでそのような感じで対処してください。
  • SceneView.duringSceneGui
    Editor拡張としてSceneView.duringSceneGui(Unity2019.1より前はSceneView.onSceneGUIDelegate)を利用して独自に表示する方法もあります。
  • Editor.OnSceneGUI
    Editor.OnSceneGUIについては、特に対応コードは記述しておりませんので未対応の状況だと認識しております。
    こちらの対応が必要であれば「選択ノードのEditor.OnSceneGUIを呼び出してほしい」という感じの要望として今後の更新で対応を検討いたします。
書き方などの詳細についてはUnityの仕様上の話となるためこちらからのサポートは致しませんのでその点はご理解ください。

zakimi
Posts: 2
Joined: 2021/06/09 12:59

Re: アクションノード等のインスペクターの情報からGizmoを変更したい

Post by zakimi » 2021/06/14 06:11

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

OnGizmoDrawの方を試してみましたが、表示することはできませんでした。
方法としてはOnSceneGUIでもなんでも大丈夫ですが、視界などの知覚範囲を定義するときにあったら便利だと思いますので、可能であればGizmoやGUIの表示機能を要望として聞いていただければ幸いです。

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

Re: アクションノード等のインスペクターの情報からGizmoを変更したい

Post by caitsithware » 2021/06/14 06:52

MonoBehaviour.OnDrawGizmosの呼び出し条件を詳しく調べてみたところ、HideFlags.HideInHierarchyが付与されている場合に表示されなくなる仕様のようでした。

Arborでは、古いUnityバージョンにおいてHideInHierarchyが付与されていないとプレハブ化したときに不具合があった関係でHideInHierarchyをつけていました。
Arbor最新版3.8.0の最低動作UnityバージョンであるUnity2018.4ではその不具合もなさそうなので一通り検証して問題なければHideInHierarchyを付与しないように対応しようと思います。

また、Editor.OnSceneGUIについてはprivateメソッドの呼び出しになってしまいますので、対応すべきかどうか悩ましいところです。
ひとまずOnSceneGUI相当の処理をしたい場合は、Editor.OnEnableでSceneView.duringSceneGuiにコールバックメソッド追加、Editor.OnDisableでduringSceneGuiから削除、コールバックメソッド内でやりたいコードを記述で同等の処理ができますので、そのように対応してください。

Post Reply