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;

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