UGUI中的粒子特效如何与屏幕适配

2020-01-22  本文已影响0人  silekey

该文解决如下问题

解决方案

对比两个方案明显修改Camera 属性更简单, 并且对性能没有影响

规则

规定UI运行的基础环境

在游戏启动时动态修改

float defaultRadio = 1136f/ 640f; // 获得默认的宽高比例
float defaultSize = 640f / 100 / 2;
float radio = (float)Screen.width / (float)Screen.height;
float scale = radio >= defaultRadio ? 1 : defaultRadio / radio;
float cameraSize = defaultSize  * scale;
GetUICam().size = cameraSize;

背后机制

在正交摄像机中size 的含义是从屏幕中心到屏幕顶部之间的距离,而这个距离
是以1个Unity单位来定的,一般我们可以理解为(米),其中一个单位可以
以一个Unity Cude 的默认宽高来确定,比如下面:


property.png screen.png

题外话

那我如果ui 想用 透视投影该怎么弄?
首先是计算高度 height = distance * tan(fov/2)

根据实际项目, 我把问题限制在如何在

适配方案是通过屏幕分辨率动态调整Camera 中的Size 以达到UI 与特效匹配的效果.

流程如下:
1> 首先定义

相关知识点:
什么是Pixels Per Unit?
正交相机中的Size 是什么含义?
Canvas Scaler 中的Scale Width Scene Size 会如何影响到UI特效的播放?

适配中的难题是:
UGUI 会根据屏幕改变, 特效也是. 而UGUI 中使用的是像素单位.

上一篇 下一篇

猜你喜欢

热点阅读