插件介绍

EasyAR Sense Unity Plugin是EasyAR Sense在Unity中的插件,在Unity中提供EasyAR Sense的丰富功能和专为Unity用户设计的便利的使用方式。它可以独立工作,也可以与AR Foundation协同工作,并且支持在Nreal等AR/VR/MR头显上的使用。

EasyAR Sense Unity Plugin是一个建立在EasyAR Sense C# API之上的非常薄的封装,用于在Unity中暴露EasyAR Sense的功能。建议阅读 EasyAR Sense 文档 来理解EasyAR Sense是如何工作的。

用法

EasyAR Sense Unity Plugin 需要在 Unity 2019.4 或更高版本中使用。

插件使用 Unity's package 组织文件,通过 tarball 文件分发。插件的发布文件是一个zip包,解压这一个zip包可以看到readme和 tgz 文件,注意不要解压这个 tgz 文件。

../_images/image_s0_3.png

通常建议把上述 tgz 文件放在工程目录中,比如 Packages 文件夹。然后通过Unity的 Package Manager window使用本地tarball文件安装插件

../_images/image_s0_1.png

在弹出的对话框中选择 com.easyar.sense-*.tgz 文件。

注意:在导入后, tgz 文件不能被删除或移动到另一个位置,因此通常需要在导入前将这个文件放在合适的地方。如果你希望与他人共享工程,可以将文件放在工程目录内,如果有使用版本管理,也需要加入。

版本划分

EasyAR Sense Unity Plugin 只能与同版本的EasyAR Sense一起使用,因此插件使用与EasyAR Sense相同的版本规则。

注意: EasyAR 不使用Unity所要求的 semantic versioning。主要区别是,minor版本号的变化也可能会引入不兼容的变化,虽然并不总是如此。

深入EasyAR Sense Unity插件

EasyAR Sense

插件的发布包内包含了EasyAR Sense的库文件,因此在使用插件的时候不需要再使用独立的EasyAR Sense。

插件中的EasyAR Sense库文件总是与同版本的EasyAR Sense的文件相同。如果你在尝试让插件运行在不同版本的EasyAR Sense上,必须保证csapi与库文件版本一致。

Scripts

插件设计为一个EasyAR Sense的薄封装,因此大多数脚本都是EasyAR Sense组件在3D场景中的控制器,在Unity环境中提供一些扩展能力。它可以辅助组织和连接EasyAR Sense的组件。

插件尽可能多的使用了Unity本身的功能,比如使用OnEnable/OnDisable来控制start/stop。大多数EasyAR Sense功能都可以不需要写脚本直接工作。插件并不封装EasyAR Sense的所有功能,EasyAR Sense的所有功能都由C# API ( csapi.cs )直接暴露到Unity环境,并可以从MonoBehaviour中访问。

插件在 ARAssembly 中实现了一种对所有EasyAR Sense组件的典型的组装策略,同时在 ARSession 控制数据流。但这并不是EasyAR Sense的所有能力。通过EasyAR Sense API的强大灵活性,你可以重写这两个脚本从而实现自定义的AR工作流。

这个插件是开源的。代码中有所有公有类型和成员的中英文文档。你可以自由修改脚本以创建自定义工作流。

你可以直接使用这个插件来快速创建AR体验,也可以参考插件代码来更加灵活和自定义的使用EasyAR Sense接口和功能,或是创建属于自己的Unity插件。

所有的脚本接口说明都可以直接在插件包中的脚本代码中找到,代码中包含脚本所有接口的中英文文档。但是Unity 不会为DLL文件生成XML文档,即使在编译选项中添加-doc也会在编译后删除文档。因此我们hack了这个过程,在脚本重新加载后复制预编译的XML文档。如果Unity在某个版本中改变了它的行为,或这个hack引起了工程中的一些问题,可以关闭 Generate XML Doc 选项。

../_images/image_s0_2.png

Editors

插件提供了一些编辑器功能以辅助开发,包括

  • 用于创建 AR Session 和其它 AR 组件的菜单项

  • 运行前 Inspector上可配置的脚本输入参数

  • 运行时控制,比如CenterMode 和 HorizontalFlipMode

  • license key和云服务配置的菜单项

  • image target的gizmo

  • 生成image target data的工具

Samples

插件的发布包含了展示不同EasyAR Sense功能以及不同算法组合工作的样例。

样例随插件包一起分发。可以使用 Unity的 Package Manager window 将样例导入工程中。参考 样例使用说明 获取详细信息。

插件的样例有一个启动器,你可以从启动器中打开大部分样例。如果要使用这个启动器,必须在Unity的build settings中添加启动器以及所有被其引用的场景。

插件的样例展示API如何使用以及EasyAR Sense如何工作,其代码逻辑是非常直接的。你可以基于样例构建自己的应用,或是复制部分样例代码到自己的工程中。但需要注意的是,样例并不是插件,所有样例的代码都不会保证在任何情况下可以不做修改而直接重用。

EasyAR Sense 及其Unity插件包含丰富的API。虽然样例中展示了重要的功能和使用,还是有很多API调用与功能使用情况未覆盖。如果样例工程不能满足项目需求,可以尝试阅读 API参考手册 来了解所有接口以及对应的EasyAR Sense功能。

从样例入手,它们会帮你理解EasyAR Sense及其 Unity Plugin 是如何工作的。