獲取 target 的狀態
session 運行過程中,target 會經歷跟蹤和丟失等狀態變化。通過以下內容,您將了解如何獲取和使用 target 的狀態信息,以及如何使用 found 和 lost 事件來控制內容的顯示。
開始之前
- 通過 ARSession 簡介 了解 session 的基本概念、組成和工作流程。
- 通過 Target 了解 target 的基本概念、狀態和生命週期。
判斷 target 是否被跟蹤
可以使用 TargetController.IsTracked 屬性判斷 target 是否被跟蹤。
使用 target 的 found 和 lost 事件
可以使用 TargetController.TargetFound 和 TargetController.TargetLost 事件來處理 target 被跟蹤和丟失的情況。
比如,下面的程式碼展示了在 target 被跟蹤時播放影片,並在 target 丟失時暫停影片播放的過程:
target.TargetFound += () =>
{
if (player && player.gameObject.activeInHierarchy)
{
player.Play();
}
};
target.TargetLost += () =>
{
if (player && player.gameObject.activeInHierarchy)
{
player.Pause();
}
};
注意
如果沒有手動卸載 target,TargetController.TargetLost 有可能在 session 停止時被調用。如果沒有手動停止 session,則它可能在 session 的 OnDestroy 過程中被調用,由於 Unity 的 OnDestroy 執行順序是不受保證的,所以在事件中使用的物件需要進行有效性檢查以避免在 OnDestroy 過程中存取已經被銷毀的物件。
後續步驟
- active 控制策略 介紹了 target 下物件的預設顯示和隱藏策略,以及如何根據需要進行調整。