【Vuforia 琐碎知识 4】获得所有可跟踪对象
2019-03-15 本文已影响0人
大刀和长剑
本文的测试环境:
- macOS Mojave 10.14.2 / MacBook Pro 2015
- Unity 2018.3.8f1
- Vuforia 8.0.10
在之前的Unity版本中,Databases下还可以勾选激活,或者在代码中激活。但是现在的Unity的Vuforia已经把这个改成自动激活了——只要场景中存在某Database的跟踪脚本,程序运行后将自动把该Database中所有目标加载出来。
这等于说省事了,但是这些自动加载出来的ImageTarget没有添加跟踪事件脚本:
自动加载出来的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>();
}
});
还是看图吧:
屏幕快照 2019-03-15 上午10.56.07.png
核心代码就两句:
- 处理的时机
RegisterVuforiaStartedCallback
- 获得所有可跟针对象
Vuforia.TrackerManager.Instance.GetStateManager().GetTrackableBehaviours()