【Vuforia 瑣碎知識 4】獲得所有可跟蹤對象

本文的測試環境:

  • macOS Mojave 10.14.2 / MacBook Pro 2015
  • Unity 2018.3.8f1
  • Vuforia 8.0.10

在之前的Unity版本中,Databases下還可以勾選激活,或者在代碼中激活。但是現在的Unity的Vuforia已經把這個改成自動激活了——只要場景中存在某Database的跟蹤腳本,程序運行後將自動把該Database中所有目標加載出來。

這等於說省事了,但是這些自動加載出來的ImageTarget沒有添加跟蹤事件腳本:


當數量太多的時候手動修改就太費勁了,需要在代碼中直接批量修改了。

需求就是這個需求,方法也簡單,我們批量處理這些對象的時機是Vuforia啓動完成後,這可註冊一個回調即可:

Vuforia.VuforiaARController.Instance.RegisterVuforiaStartedCallback(() => {
            Debug.Log("Vuforia啓動完成...");

            foreach (var tb in Vuforia.TrackerManager.Instance.GetStateManager().GetTrackableBehaviours())
            {
                Debug.Log(tb.TrackableName + " 跟蹤目標");
                tb.name = tb.TrackableName + "ImageTarget";
                tb.gameObject.AddComponent<DefaultTrackableEventHandler>();
                tb.gameObject.AddComponent<Vuforia.TurnOffBehaviour>();
            }
});

還是看圖吧:


核心代碼就兩句:

  • 處理的時機RegisterVuforiaStartedCallback
  • 獲得所有可跟針對象 Vuforia.TrackerManager.Instance.GetStateManager().GetTrackableBehaviours()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章