正交视角(Orthographic Projection)

MainCamera与设备分辨率的关系

Unity的MainCamera与设备分辨率的关系 - 图1Unity的MainCamera与设备分辨率的关系 - 图2

在Camera组件中将Projection设置为Orthographic,设置Size为1,将Scene视图切换成2D视角,将Tools设置为Rect Tool,设置Game视图的分辨率为1080x1920。

可以看出Camera的Rect高度恰好是2个网格高度,再将Game视图分辨率设置为1920x1080。

Unity的MainCamera与设备分辨率的关系 - 图3

Camera的Rect高度还是2个网格高度。再多次改变Game视图的分辨率,其表现结果一致。

可以得到结论:Camera在Projection=Orthographic且Size=1时,其Rect的高度始终是2个单元格高度。

切换成横向适配,让Camera的Rect宽度是一个单元格宽度

  1. float rate = (float)Screen.height * 0.5f / (float)Screen.width;
  2. Camera.main.orthographicSize = rate;

计算屏幕宽度对应的单元格数量

  1. //屏幕宽度对应n个单元格
  2. float xGridRatio = (2 / Screen.height) * Screen.width;

2D图片在Scene视图的分辨率与大小关系

Unity的MainCamera与设备分辨率的关系 - 图4Unity的MainCamera与设备分辨率的关系 - 图5Unity的MainCamera与设备分辨率的关系 - 图6Unity的MainCamera与设备分辨率的关系 - 图7

2D图片的像素与单元格的映射关系是独立的,与MainCamera无关。

是图片导入参数的Pixels Per Unit控制Unity的MainCamera与设备分辨率的关系 - 图8

以上图中的256x256的图片为例,当Pixels Per Unit设置为256时,图片在Scene视图中恰好与一个单元格重叠。此时调整Transform的Scale就方便处理与MainCamera的大小关系。

透视视角(Perspective Projection)

Unity的MainCamera与设备分辨率的关系 - 图9

计算视锥体大小

UGUI的适配

Aspect Raio Fitter

Unity的MainCamera与设备分辨率的关系 - 图10

Unity的MainCamera与设备分辨率的关系 - 图11

手册