Unity中修改分辨率后相机偏移、物体不可见问题求助
Unity修改分辨率导致相机拉近、物体不可见的解决方案
针对修改分辨率后相机视角拉近、场景物体大量不可见且全场景存在该问题的情况,排除Canvas与Sprite设置问题后,可从以下方向排查解决:
1. 检查正交相机的Size适配(若使用正交相机)
正交相机的Orthographic Size直接决定可视范围,分辨率变化时若未动态适配,会导致显示区域缩小。可添加如下脚本实现自动适配:
using UnityEngine; [RequireComponent(typeof(Camera))] public class OrthoCameraResizer : MonoBehaviour { // 设计时的基准分辨率 public Vector2 referenceResolution = new Vector2(1920, 1080); private Camera _orthoCamera; void Start() { _orthoCamera = GetComponent<Camera>(); AdjustCameraSize(); } void AdjustCameraSize() { float heightRatio = Screen.height / referenceResolution.y; _orthoCamera.orthographicSize = referenceResolution.y / 2f * heightRatio; } // 窗口尺寸变化时重新适配 void OnRectTransformDimensionsChange() { AdjustCameraSize(); } }
将脚本挂载到主相机上,运行后相机可视范围会随分辨率自动调整。
2. 调整项目分辨率适配设置
打开Edit > Project Settings > Player,在分辨率与展示面板中:
- 将
宽高比从固定宽高比改为匹配宽度或高度,并根据需求选择优先匹配方向(如优先匹配高度); - 尝试切换
全屏模式为无边框窗口或窗口化,排查独占全屏模式下的适配冲突。
3. 排查全局分辨率适配脚本
搜索项目中调用Screen.SetResolution或监听Screen.resolutionChanged事件的脚本,检查是否存在强制锁定宽高比、修改相机FOV/Size的逻辑,这类脚本可能导致分辨率变化时画面强制裁剪。
4. 验证相机基础设置
- 检查相机的
近裁剪面与远裁剪面参数,确保场景物体处于视锥体范围内; - 确认相机的
剔除遮罩未误隐藏场景物体所在层级。
补充截图说明
- 错误尺寸画面:画面聚焦中心,仅显示局部场景,多数物体超出视野
- 游戏正确尺寸:完整展示全部场景内容
- Canvas设置:Canvas渲染模式为
屏幕空间 - 覆盖,UI缩放模式为随屏幕尺寸缩放,参考分辨率1920x1080,匹配方式为匹配宽度或高度(匹配值0.5)
内容的提问来源于stack exchange,提问作者Desespere
相关产品推荐
相关产品推荐

