unity實戰 手機屏幕適配


使用背景

為了在UI中使用特效層,項目Canvas采用了Screen Space-Camera類型

UI的Scale Mode 選擇的是Scale With Screen Size 的Expand,畫布大小填的是1334, 750

在該選擇下,會自動根據分辨率適配寬度/高度。

自動適配的規則是:

屏幕實際寬高比值的  < 畫布大小的寬高比值  采用以寬度縮放

屏幕實際寬高比值的  > 畫布大小的寬高比值  采用以高度縮放

screen.width/screen.height < 1334/750

 

實際問題

1.血條或者頭頂的ui,跳字的位置會有偏差,根據3D坐標轉2D坐標的接口得到的坐標(Camera.main.WorldToScreenPoint)已經不適用了,需要做縮放。

縮放的解決方式:

以寬縮放,需要以寬的縮放比例去縮放高

ratio = 1334/screen.width

x = screen2d.x * ratio - screen.width/2 // 以寬度的比例求出x值(減去屏幕大小的一半是因為錨點在中心)

y = (screen2d.y - screen.height/2) * ratio // 直接以寬的比例求出y值

 

以高縮放,需要以高的縮放比例去縮放高

ratio = 750/screen.height

x = (screen2d.x - screen.width/2) * ratio // 直接以高的比例求出x值

y = screen2d.y * ratio - screen.height/2 // 以高度的比例求出y值(減去屏幕大小的一半是因為錨點在中心)

 

ui使用該坐標即可完美的適配

 

2.當遇到ipad這種寬高度比低的會以寬度適配,導致上下留白。

解決方式讓ui做高些,現在還沒做一些其他嘗試。先臨時處理

 

3.劉海屏

項目解決思路

打表的形式,ios有自己的接口screen.safearea,Android9之后有api接口,其他安卓廠商有自己的設定,只要把市面的機型劉海高度記錄下來,適配的時候直接使用即可。

ios安全范圍參考:

https://www.cnblogs.com/zhw511006/p/7735483.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM