Unity3D升级2020版VR开发可能遇到的一些问题
1.Unity3D 2020版VR已经整合到XR中并统一以插件包形式提供
在Unity2020版本以前,打开VR功能是在Player Setting中勾选Virtual Reality Supported选项,并加载需要的VR SDK库
Unity2020版本内建的XR Settings功能已经取消,统一通过XR Plugin Management插件包形式提供
安装插件包以后可以选择安装需要的VR库
在对应的VR库中设置选项
如果不需要用到VR插件的特殊功能,项目中不需要引入VR对应的开发包,如StreamVR包,XR框架插件已经包含了通用的VR功能
2.Unity3D 2020版VR摄像机需要单独设置以后才能追踪头显位置
Unity3D 2020版以前,只要摄像机的Target Eye设置为Both,默认就可以追踪头显位置。
Unity3D 2020版需要加载对应的组件才可以被追踪。
新建场景可以直接选择菜单GameObject->XR->Convert Main Camera To XR Rig,编辑器自动帮您在场景中设置好VR Camera组件,升级场景可以仿照系统创建组件自己手动创建
3.Shader报错:undeclared identifier 'sampler_CameraDepthTexture’
Shader error in 'Hidden/Post FX/Fog': undeclared identifier 'sampler_CameraDepthTexture' at line 63 (on d3d11)
Compiling Vertex program with STEREO_INSTANCING_ON
Platform defines: SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_ENABLE_DETAIL_NORMALMAP UNITY_ENABLE_REFLECTION_BUFFERS UNITY_LIGHTMAP_FULL_HDR UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BLENDING UNITY_SPECCUBE_BOX_PROJECTION UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS
Disabled keywords: FOG_EXP FOG_EXP2 FOG_LINEAR SHADER_API_GLES30 UNITY_ASTC_NORMALMAP_ENCODING UNITY_ENABLE_NATIVE_SHADOW_LOOKUPS UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS UNITY_HARDWARE_TIER1 UNITY_HARDWARE_TIER2 UNITY_HARDWARE_TIER3 UNITY_LIGHTMAP_DLDR_ENCODING UNITY_LIGHTMAP_RGBM_ENCODING UNITY_METAL_SHADOWS_USE_POINT_FILTERING UNITY_NO_DXT5nm UNITY_NO_FULL_STANDARD_SHADER UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 UNITY_PBS_USE_BRDF3 UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION UNITY_VIRTUAL_TEXTURING
这个问题可能是Shader不支持VR双眼渲染模式造成的,XR插件渲染模式有支持单遍渲染的模式,把Multi Pass修改为Single Pass Instanced就可以了
4.报错:Failed to load openxr runtime loader.
Failed to load openxr runtime loader.
UnityEngine.XR.Management.XRGeneralSettings:AttemptInitializeXRSDKOnLoad () (at Library/PackageCache/com.unity.xr.management@4.2.1/Runtime/XRGeneralSettings.cs:148)
这个问题比较难发现,一通折腾后找到的解决办法很简单,项目不要放在中文路径下就可以了