Table of Contents

適用於 target 和 origin 的 active 控制策略

通過以下內容,您將瞭解 target 和 origin 下物體的默認顯示和隱藏策略,以及如何根據需要進行調整。

開始之前

  • 閱讀 Target 瞭解 target 的基本概念、狀態和生命週期。
  • 閱讀 XR Origin 瞭解 XR Origin 的基本概念、組成和生命週期。

active 控制和控制策略類型

session 運行過程中,target 和 origin 會經歷跟蹤和丟失等狀態變化。通過 active 控制策略,可以自動管理 target 和 origin 下物體的顯示和隱藏行爲。

在 Unity 中,ActiveController 組件負責自動管理 target 和 orign 物體的 GameObject.activeSelf 狀態,以便在 target 被跟蹤或運動跟蹤開始跟蹤後顯示內容,在 target 丟失或運動跟蹤成功初始化之前隱藏內容。

ActiveController 提供了兩種不同的 active 控制策略:

默認情況下,TargetController 使用 ActiveWhileTracked 策略,這意味着當 target 被跟蹤時,target 以及其下的內容會被激活,而當跟蹤丟失時,target 以及其內容會被停用。

默認情況下,XROriginChildController 使用 ActiveAfterFirstTracked 策略,這意味着在運動跟蹤成功初始化之前,origin 以及其下的內容會被停用,而一旦運動跟蹤成功初始化,origin 以及其下的內容會被持續激活。

選擇不同的 active 控制策略

打開 Inspector 面板,在 Strategy 下拉菜單中選擇 Input

alt text

然後在右側選擇所需的 active 控制策略來覆蓋默認策略。

alt text

在腳本中,可以通過 OverrideStrategy 屬性來覆蓋默認的 active 控制策略。

比如,下面的代碼展示瞭如何將 target 的 active 控制策略設置爲 ActiveAfterFirstTracked

target.ActiveController.OverrideStrategy = ActiveController.Strategy.ActiveAfterFirstTracked;

對 active 策略的修改會即時生效,並根據當前的跟蹤狀態更新 GameObject.activeSelf

關閉 active 控制

如果需要完全禁用 active 控制,比如需要根據需要進行控制,可以通過禁用 ActiveController 組件來關閉 active 控制。

alt text

在腳本中,可以通過設置 ActiveController.enabled 屬性來關閉 active 控制。

target.ActiveController.enabled = false;

ActiveController.enabled 屬性的修改會即時生效,並且不會再根據跟蹤狀態更新 GameObject.activeSelf。如果再次啓用 ActiveController 組件,GameObject.activeSelf 會根據當前的跟蹤狀態進行更新。