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的 ARSession 及 XR 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.ARCenterMode 为 SessionOrigin 。如果功能不正常,你需要自己管理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,则保持不变