插件介绍¶
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
文件。
通常建议把上述 tgz
文件放在工程目录中,比如 Packages
文件夹。然后通过Unity的 Package Manager window 来 使用本地tarball文件安装插件。
在弹出的对话框中选择 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
选项。
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 是如何工作的。