1.相机自适应
相机的自适应是为了让游戏在不同分辨率的设备下运行的时候,尽可能保证所有游戏的关键内容都能让玩家看得到。
比如一个1920×1080的屏幕,在屏幕的最左侧摆放着一个物体,这时候切换到500×500的分辨率,这个物体就看不到了,这时候就需要我们让相机能自动适应玩家的屏幕分辨率。
下面是一个相机屏幕适配器的工具脚本,你可以直接挂载到主相机上运行,一些参数可以根据你的项目实际需要做调整。
cs
using UnityEngine;
public class CameraScreenAdapter : MonoBehaviour
{
private Camera mainCamera;
//设计游戏时确定的宽高比(1920*1080)
private readonly float design_AspectRatio = 1.77f;
//设计游戏时确定的相机视体大小(orthographicSize)
private readonly float design_CameraSize = 8.5f;
public void Awake()
{
mainCamera = Camera.main;
}
public void Update()
{
AutoSize();
}
private void AutoSize()
{
//获得当前屏幕的宽高比
float aspectRatio = (float)Screen.width / (float)Screen.height;
//如果当前的宽高比小于设计的宽高比,那我们就要计算新的宽高比与现在的宽高比的比例,将这个比例乘以现在的宽高比
if(aspectRatio < design_AspectRatio)
{
float scale = aspectRatio / design_AspectRatio;
mainCamera.orthographicSize = design_CameraSize / scale;
}else
{
mainCamera.orthographicSize = design_CameraSize;
}
}
}
2.UI自适应
UI自适应一般用Unity的CanvasScaler 组件实现
这个在创建Canvas的时候会默认自带,如果没有你就需要自己添加一个。
-
在CanvaScaler 中,将UI Scale Mode 设置为Scale With Screen Size
-
输入参考分辨率Reference Resolution ,这取决于你设计游戏的时候选定屏幕尺寸,比如你要做横屏游戏,那么X = 1920,Y = 1080 ,这是常用的参考分辨率。
-
设置Screen Match Mode 为Match Width Or Height
-
接下来下面会有一个Match拖动条,这个表示确定缩放操作是依据宽度还是高度作为参考,还是两者兼而有之。横屏游戏拖到最左边即可。