添加 Mega Go 跟踪目标
本文介绍了如何添加和配置 Mega Go 的跟踪目标。
开始之前
- 检查 我的定位功能可以使用了吗? 确认已下载正确地图。
- 导入最新版本的 EasyAR 插件并启用 Mega Go 功能
- 了解 Unity AR 的跟踪目标 的基本概念和使用方法
Примечание
以下内容及工具仅适用于使用 EasyAR Mega Go 开发 Unity 应用的过程。需要插件版本 >= 4003.1。
Mega Go 不支持小程序开发。
本文内容需要工程中已经导入如下 Unity 包:
com.easyar.sense
Mega Go 的跟踪目标
Mega Go 的跟踪目标是包含 MegaGoBlockController 组件的空物体,它在 Unity 中表示一个 block。

Примечание
在未导入 com.easyar.mega 包时,block 的编辑器功能不可使用,但不影响运行时的跟踪效果和功能。
创建跟踪目标
在 Hierarchy 视图中 空白 处点击右键,通过菜单 EasyAR Sense > Mega > Target : Mega Go Block 可以创建 Mega 的跟踪目标。

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

在脚本中,可以在组件 MonoBehaviour.Start() 前修改 Source 以设置 block 的来源。
block.Source = new MegaGoBlockController.FileSourceData(PathType.Absolute, path);
其中
- PathType 是 emg 文件路径的类型,可以是绝对路径(
Absolute)或工程的 StreamingAssets 路径(StreamingAssets)。 - Path 是 emg 文件的路径,PathType 为
Absolute时是文件系统中的绝对路径,PathType 为StreamingAssets时是其在工程中 StreamingAssets 文件夹下的相对路径。
Совет
由于 emg 文件可能较大,如果应用包体大小过大,建议仅在测试阶段使用 StreamingAssets 路径,正式发布时使用绝对路径并通过资源包或其它方式将 emg 文件放置在应用可访问的文件系统路径中。
配置 target 使用的跟踪器
跟踪目标会被配置的跟踪器加载并跟踪。
Важно
Mega Go 的跟踪器同一时间只能跟踪一个 block,若同时有多个 block 被配置到同一个跟踪器中,则只有最后被加载的 block 会被使用。
在 Hierarchy 视图中可以选择 block 节点后选择 session 中的 Mega Go Tracker。
![]()
在脚本中,可以修改 Tracker 以设置 block 的跟踪器。
block.Tracker = megaGoTracker;
Tracker 可以在运行时随时修改,加载/卸载会在 session 运行时发生。如果设置 Tracker 为 null,该 target 将会被从之前设置的跟踪器中卸载。
Примечание
target 被跟踪有几个关键条件:
- 该 Source 所对应的 block 必须处于可用状态(正式数据始终离线可用,测试数据只有服务中存在该数据时才可用)。
- MegaGoBlockController.Source 的文件必须被正确加载。
- 文件加载后没有加载其它 block 对应的文件。
跟踪目标的生命周期
一个常见的跟踪目标生命周期如下:
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 被设置为不使用跟踪器之后。
