使用Vuforia+Unity构建iPhone X(iOS11.4)项目出现黑屏求助
我之前帮团队排查过几乎一模一样的问题!当时也是用XCode 9.4、Unity 2018.1、Vuforia 7.1.31这套组合,iPhone 6跑起来完全正常,但iPhone X一打开就是黑屏。给你几个我们验证过有效的解决方向:
检查Vuforia的刘海屏适配与相机配置
首先确认Info.plist里已经添加了NSCameraUsageDescription权限描述(虽然iPhone 6正常,但iPhone X对权限校验的逻辑更严格)。更关键的是,Vuforia 7.1.31对iPhone X的刘海屏适配有已知坑:- 打开Unity的Vuforia Configuration面板,找到Camera Device模块,先把
Camera Direction切换为BACK,再切回DEFAULT,保存后重新打包; - 确保面板里的Background Plane是
Enabled状态,避免被UI层完全遮挡相机画面。
- 打开Unity的Vuforia Configuration面板,找到Camera Device模块,先把
调整Unity iOS构建的核心渲染选项
打开Unity的Build Settings → Player Settings → iOS → Other Settings,找到Rendering区域:- 把Metal API Validation设为
Disabled,旧版本Unity搭配iPhone X时,这个选项容易触发渲染异常; - 关闭Graphics Jobs选项,我们当时就是关掉这个后,黑屏问题直接缓解;
- 确认Target SDK Version设为
iOS 11.4,和XCode 9.4的最高支持版本保持一致,版本不匹配也会导致兼容性问题。
- 把Metal API Validation设为
XCode里手动修复视图层级适配
打包后在XCode中打开项目,找到UnityAppController.mm文件,搜索createUnityView方法,添加适配iPhone X安全区域的代码:CGRect safeArea = [[UIApplication sharedApplication] keyWindow].safeAreaLayoutGuide.layoutFrame; unityView.frame = safeArea;同时建议在Debug模式下运行,查看控制台是否有Vuforia相关错误日志(比如
CameraDevice::StartCamera failed),这些日志能直接定位相机初始化失败的原因。升级Vuforia小版本包
Vuforia 7.1.31确实存在iPhone X的适配bug,你可以尝试升级到同系列的7.1.45版本(和现有项目代码兼容,不需要大改),替换Unity中的Vuforia资源包后重新打包。我们当时升级到这个版本后,黑屏问题彻底解决了。
内容的提问来源于stack exchange,提问作者Seto

