Unity UGUI 原理篇(二):Canvas Scaler 縮放核心

本文详细介绍了Unity UGUI中Canvas Scaler组件的工作原理,包括Size、Scale Factor和UI Scale Mode的设置。Canvas Scaler通过调整Scale Factor来缩放Canvas及其所有元素,影响字体大小和图像边界。UI Scale Mode的Constant Pixel Size模式下,Canvas Size始终等于Screen Size,而Scale With Screen Size模式会根据预设分辨率进行缩放,提供Expand、Shrink和Match Width or Height三种模式。Constant Physical Size模式则根据设备DPI进行缩放,确保物理尺寸的一致性。
摘要由CSDN通过智能技术生成

Unity UGUI 原理篇(二):Canvas Scaler 縮放核心

https://blog.csdn.net/gz_huangzl/article/details/52484611

 

Canvas Scaler

Canvas Scaler是Unity UI系統中,控制UI元素的總體大小和像素密度的Compoent,Canvas Scaler的縮放比例影響著Canvas下的元素,包含字體大小和圖像邊界。

 

Size

Reference Resolution:預設螢幕大小

Screen Size:目前螢幕大小

size-1

 

Canvas Size:Canvas Rect Transform 寬高

size-2

 

Scale Factor

http://docs.unity3d.com/ScriptReference/Canvas-scaleFactor.html

 用於縮放整個Canvas,而且調整Canvas Size與Screen Size一樣

 

先來看一段官方程式碼

程式碼可以看出,Canvas Scaler 透過設定Canvas下的Scale Factor,縮放所有在此Canvas下的元素

 

當Scale Factor為1時,Screen Size (800*600)、Canvas Size(800*600),圖片大小1倍

Scale Factor-1

Scale Factor-1-1

 

當Scale Factor為2時,Screen Size (800*600)、Canvas Size(400*300),圖片大小2倍

Scale Factor-2

Scale Factor-2-1

 

在當Scale Factor為2時,Scale Factor 會調整整個Canvas 的大小,並讓他的大小跟Screen Size一樣,運算後Canvas Size放大2倍,剛好等於Screen Size,而底下的圖片會放大2倍

 

UI Scale Mode

Constant Pixel Size

Canvas Size 始終等於 Screen Size,透過Scale Factor直接縮放所有UI元素

 

1. Scale Factor:透過此Factor縮放所有在此Canvas下的元素
2. Reference Pixels Per Unit:
先介紹圖片檔設定中的Pixels Per Unit,意思是在這張Sprite中,世界座標中的一單位由幾個Pixel組成
 Pixels Pre Unit-1

 

這邊使用的測試圖片為原始大小100*100 的圖檔,這邊統稱測試圖
 Test Image

 

舉例來說,場景中有一個1*1 Cube ,與一個Sprite圖片指定為測試圖,兩者的Transform Scale 都為 1
當 Pixels Per Unit=100,每單位由 100 Pixel組成,Sprite 是100*100 Pixels,那 Sprite 在世界座標中大小就會變成 100/100 * 100/100 = 1*1 Unit

Pixels Pre Unit-2(左:Cube ,右:Sprite)

 

當 Pixels Per Unit=10,每單位由 10 Pixel組成,Sprite 是100*100 Pixels,那 Sprite 在世界座標中大小就會變成 100/10 * 100/10 = 10*10 Unit

Pixels Pre Unit-3(左:Cube,右:Sprite)

 

結論:
■ Unity中一單位等於 100 Pixels
■ 由此可以推導出公式:

Sprite 在世界座標中大小 = 原圖大小(Pixels) / Pixels Per Unit

 
讓我們回到 Reference Pixels Per Unit,官方解釋是,如果圖片檔有設定Pixels Per Unit,則會將Sprite 的 1 pixel 轉換成 UI 中的 1 pixel

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值