Unity 2D地图在不同屏幕分辨率下显示不一致问题求助
解决2D塔防竞技游戏不同分辨率下视野公平问题
先看你的两张对比画面:

核心问题是不同宽高比的屏幕导致相机视野范围不一致,竞技游戏必须保证所有玩家看到的区域完全相同,这里给你两种新手友好的解决方法:
方法一:通过Player Settings快速固定视野(无需脚本)
这是最简单的方案,直接限制游戏的宽高比适配逻辑:
- 打开Unity菜单栏的
Edit > Project Settings > Player,找到Resolution and Presentation板块。 - 在
Aspect Ratio设置里,选择16:9(你的设计分辨率1920x1080的宽高比),把下方的Match选项设为1(Height)。 - 这样设置后,当玩家用宽于16:9的屏幕(比如2960x1440)运行游戏时,屏幕左右会自动填充黑边,相机只会显示16:9范围内的内容,不会泄露额外地图区域。
方法二:用脚本灵活控制相机边界(适合需要自定义适配的场景)
如果不想用黑边,希望尽可能利用屏幕空间但又不显示额外区域,可以写个简单脚本固定相机的左右边界:
using UnityEngine; public class CameraBounds : MonoBehaviour { // 根据你的地图实际范围修改这两个值(示例对应1920x1080正交相机的左右边界) public float leftBound = -9.6f; public float rightBound = 9.6f; private Camera mainCamera; private int lastScreenWidth; private int lastScreenHeight; void Start() { mainCamera = GetComponent<Camera>(); lastScreenWidth = Screen.width; lastScreenHeight = Screen.height; AdjustCameraView(); } void Update() { // 仅在分辨率变化时调整,避免重复计算 if (Screen.width != lastScreenWidth || Screen.height != lastScreenHeight) { lastScreenWidth = Screen.width; lastScreenHeight = Screen.height; AdjustCameraView(); } } void AdjustCameraView() { // 计算当前相机的半宽度 float currentHalfWidth = mainCamera.orthographicSize * mainCamera.aspect; // 设计分辨率下的半宽度 float targetHalfWidth = (rightBound - leftBound) / 2f; // 如果当前半宽度超过目标值,缩小正交大小,保证视野不超出左右边界 if (currentHalfWidth > targetHalfWidth) { mainCamera.orthographicSize = targetHalfWidth / mainCamera.aspect; } } }
使用步骤:
- 把这个脚本拖到主相机对象上。
- 在Inspector面板里,根据你的地图实际可显示范围,修改
leftBound和rightBound的值(比如1920x1080下正交相机大小为5.4时,半宽度是5.4*(16/9)=9.6,所以左右边界设为-9.6和9.6)。
这样无论屏幕宽高比如何变化,相机都只会显示你设定的左右边界内的区域,完全避免视野不公平的问题。
内容的提问来源于stack exchange,提问作者Zeruma
相关产品推荐
相关产品推荐

