添加 Mega 跟踪目标
本文介绍了如何添加和配置 Mega 的跟踪目标。
开始之前
- 检查 我的定位库可以使用了吗?
- 导入最新版本的 EasyAR 插件并启用 Mega 功能
- 了解 Unity AR 的跟踪目标 的基本概念和使用方法
注意
以下内容及工具仅适用于使用 EasyAR Mega 开发 Unity 应用的过程。
如果您在开发小程序,请参考 使用 Unity 编辑器创建并上传标注(小程序开发)。
如果您不在开发 Unity 应用,但希望查看 Mega 建图结果,请参考 Mega 使用指南中的 预览3D 实景网格。
如果您不在开发 Unity 应用,但需要模拟运行查看定位效果,请参考 Mega 使用指南中的 模拟运行效果预览。
本文内容需要工程中已经导入如下 Unity 包:
com.easyar.sense
Mega 的跟踪目标
Mega 的跟踪目标是包含 MegaBlockController 组件的空物体,它在 Unity 中表示一个 block。

创建跟踪目标
在 Hierarchy 视图中 空白 处点击右键,通过菜单 EasyAR Sense > Mega > Target : Mega Block 可以创建 Mega 的跟踪目标。

在脚本中,可以使用 ARSessionFactory.CreateController 创建。
ARSessionFactory.CreateController<MegaBlockController>();
配置跟踪目标
配置 target 数据来源
跟踪目标只有在正确配置其来源后才能被识别和跟踪。
在 Hierarchy 视图中可以选择 block 节点后填写 block 的 ID 和 Name。

在脚本中,可以在组件 MonoBehaviour.Start() 前修改 Source 以设置 block 的来源。
block.Source = new MegaBlockController.BlockInfoSourceData(id, name);
其中
- block id 是 block 的唯一标识,必须填写。
- block name 是 block 的名称,可以根据需要随意填写,一般建议填写 block 的真实名称以便于识别。
配置 target 使用的跟踪器
跟踪目标会被配置的跟踪器加载并在正确定位到之后跟踪。
在 Hierarchy 视图中可以选择 block 节点后选择 session 中的 Mega Tracker。
![]()
在脚本中,可以修改 Tracker 以设置 block 的跟踪器。
block.Tracker = megaTracker;
Tracker 可以在运行时随时修改,加载/卸载会在 session 运行时发生。如果设置 Tracker 为 null,该 target 将会被从之前设置的跟踪器中卸载。block 加载为虚拟过程,不会失败。
注意
target 被跟踪有几个关键条件:
- MegaBlockController.Source 的 id 必须在 MonoBehaviour.Start() 前被正确配置。
- 该 Source 的 id 所对应的 block 必须在定位库中存在。
- MegaBlockController.Tracker 必须被配置使用正确的定位库。
跟踪目标的生命周期
一个常见的跟踪目标生命周期如下:
flowchart LR
sstart((session 启动))
sstop([session 停止])
start("Target.Start")
load("加载")
tracking[["持续跟踪"]]
sstart --> load --> tracking --> sstop
start -. "Target.Tracker = tracker" .-> load
流程大致分为几个阶段:
- 加载:跟踪目标被配置的跟踪器加载,这会发生在 target 自身 Start() 及 session 启动之后。
- 跟踪过程:跟踪目标被定位到之后,跟踪器会持续跟踪目标的位置和状态,直至另一个目标被定位到。
- 卸载:跟踪目标被从跟踪器中卸载,跟踪器不再跟踪目标。这会发生在 session 停止或 target 被设置为不使用跟踪器之后。









