本文的測試環境:
- 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()