Target および origin 向けの active 制御ストラテジー
以下の内容を通じて、target および origin 下のオブジェクトのデフォルト表示・非表示ストラテジーと、必要に応じた調整方法を理解できます。
開始前に
active 制御とストラテジータイプ
セッション実行中、target および origin はトラッキングやロストなどの状態変化を経験します。active 制御ストラテジーにより、target および origin 下のオブジェクトの表示・非表示動作を自動管理できます。
Unity では、ActiveController コンポーネントが target および origin オブジェクトの GameObject.activeSelf 状態を自動管理し、target がトラッキングされた時やモーション・トラッキングが開始された後にコンテンツを表示し、target がロストした時やモーション・トラッキングが初期化される前にコンテンツを非表示にします。
ActiveController は2種類の active 制御ストラテジーを提供します:
- ActiveWhileTracked:トラッキング中は GameObject がアクティブ化(GameObject.activeSelf が
trueに設定)。トラッキングロスト時は非アクティブ化(GameObject.activeSelf がfalseに設定)。 - ActiveAfterFirstTracked:初回トラッキング前は GameObject が非アクティブ(GameObject.activeSelf が
falseに設定)。一度正常にトラッキングされると、持続的にアクティブ状態(GameObject.activeSelf がtrueに設定)を維持。
デフォルトでは、TargetController は ActiveWhileTracked ストラテジーを使用します。これは target がトラッキングされると target およびその下のコンテンツがアクティブ化され、トラッキングロスト時には非アクティブ化されることを意味します。
デフォルトでは、XROriginChildController は ActiveAfterFirstTracked ストラテジーを使用します。これはモーション・トラッキングが正常に初期化されるまで origin およびその下のコンテンツが非アクティブ化され、一度モーション・トラッキングが正常に初期化されると origin およびその下のコンテンツが持続的にアクティブ化されることを意味します。
異なる active 制御ストラテジーの選択
Inspector パネルを開き、Strategy ドロップダウンメニューから Input を選択

次に右側で必要な active 制御ストラテジーを選択し、デフォルトストラテジーを上書きします。

スクリプトでは、OverrideStrategy プロパティを通じてデフォルトの active 制御ストラテジーを上書きできます。
例えば、以下のコードは target の active 制御ストラテジーを ActiveAfterFirstTracked に設定する方法を示します:
target.ActiveController.OverrideStrategy = ActiveController.Strategy.ActiveAfterFirstTracked;
active ストラテジーへの変更は即時有効となり、現在のトラッキング状態に基づいて GameObject.activeSelf が更新されます。
active 制御の無効化
完全に active 制御を無効化する必要がある場合(例:手動制御が必要な場合)、ActiveController コンポーネントを無効化することで active 制御をオフにできます。

スクリプトでは、ActiveController.enabled プロパティを設定することで active 制御を無効化できます。
target.ActiveController.enabled = false;
ActiveController.enabled プロパティの変更は即時有効となり、トラッキング状態に基づいた GameObject.activeSelf の更新は停止します。ActiveController コンポーネントを再度有効化すると、GameObject.activeSelf は現在のトラッキング状態に基づいて更新されます。