Unity XR 自动切换

自动切换Unity XR(比如AR Foundation)物体。主要为移动AR设计,头显上默认配置下功能会被禁用。全局配置开关: EasyAR 配置Unity XR > Unity XR Auto Switch

由于Unity的AR Foundation在手机上底层实现是ARCore和ARKit,只能在有限的设备上使用,尤其是很多国产Android手机上无法使用,所以通常建议仅在受支持的设备上启用对应脚本。如果你需要在运行时自动切换AR Foundation,你需要通过Unity的右键菜单在场景中创建AR Foundation的 ARSessionXR Origin ,并使用AR Foundation的相机。

Unity XR > Unity XR Auto Switch 有细节控制,在所有控制开关都开启的情况下,

  • 编辑器中, ARSession 会禁用AR Foundation的ARSession

  • 运行时, ARSession 会在awake时禁用所有Unity XR Core组件及AR Foundation的组件。

  • 运行时,如果被选择的frame source继承自 ARFoundationFrameSource 或是实现了XROrigin原点的 ExternalDeviceFrameSource ,则被禁用的Unity XR Core组件及AR Foundation组件将在 ARSession.StartSession 时启用(未被EasyAR禁用的不会启用)。如果其他frame source被选择,则在 ARSession.StartSession 时会禁用所有Unity XR Core组件及AR Foundation的组件。

  • 运行时,所有Unity XR Core组件及AR Foundation的组件会在 ARSession.StopSession 时禁用。

默认配置下,功能启用条件如下,

  • 在Windows/Mac上启用。

  • 切换器启动时,如果移动AR(ARKit/ARCore)的loader是激活的,则启用。

  • 切换器启动时,如果存在移动AR(ARKit/ARCore)之外的其它loader,但没有任何一个loader是激活的,则禁用。

备注

需要注意,XR Interaction Toolkit的组件不受该功能控制,但其在EasyAR中是否可用未经验证。理论上对于只使用XROrigin GameObject和其Camera的功能应该可以正常使用,但你可能需要设置 ARSession.ARCenterModeSessionOrigin 。如果功能不正常,你需要自己管理XR Interaction Toolkit的组件,在frame source不是继承自 ARFoundationFrameSource 时禁用相关组件。

自定义行为处理

如果你需要自己控制这些组件的切换,或是EasyAR的行为干扰了某些组件的正常工作,请确保关闭这些选项。

你也可以手动完成类似功能。可以根据需要开启或关闭 EasyAR 配置Unity XR > Unity XR Auto Switch 选项,并参考以下基本规则进行修改:

  • 在编辑器中禁用AR Foundation的ARSession(Unity的ARSession的执行时序早于所有其它脚本)

  • 在AR Foundation开始工作前禁用所有Unity XR Core组件及AR Foundation的组件以及你需要控制的相关组件或功能

  • 如果EasyAR的ARsession的Assemble过程中选择使用 ARCoreARFoundationFrameSource 或 ARKitARFoundationFrameSource 之后,启用之前禁用的所有组件或功能,需要在session启动前完成

  • 如果EasyAR的ARsession的Assemble过程中选择使用了其它FrameSource,则保持不变