iphoneX由于帶有各種傳感器,不得不搞了個(gè)劉海屏,各個(gè)國產(chǎn)手機(jī)也跟了一波風(fēng),手機(jī)傳感器塞的很爽,但苦逼的開發(fā)者又增加了新工作——為app增加劉海屏適配。
在游戲里面,很多UI都是緊貼屏幕邊緣的,這樣就會被劉海屏的劉海蓋住,無法點(diǎn)擊。網(wǎng)上找了幾種適配方案,有的是直接縮短游戲?qū)挾龋瑒⒑5牟糠质且粭l整齊的黑邊。我覺得這樣的方案不好,畢竟它縮短了游戲顯示寬度;另一種方案是只將UI的部分向劉海內(nèi)側(cè)推動一截,其余不變,場景還是原來的寬度。我覺得這個(gè)方案比較好一些,相對不影響游戲的視角觀感。
實(shí)現(xiàn)方式:
1.首先要檢測是否是劉海屏。這里可以使用平臺和分辨率來判斷,也可以讀取SystemInfo.deviceModel獲取設(shè)備型號,或者用這個(gè)UnityEngine.iOS.Device.generation也可以,主要是要實(shí)現(xiàn)這么個(gè)接口就好。
2.如果是劉海屏,對需要設(shè)置適配的UI(只有那些交互元素貼邊的UI需要適配,其余不需要),設(shè)置其最底層Panel的offsetMin或者offsetMax(有的博客是直接在劉海屏上同時(shí)設(shè)置offsetMin和offsetMax,也就是四邊都往里縮進(jìn),我覺得不太好,畢竟只有一邊有劉海,其他的邊不需要縮進(jìn),否則會縮小游戲場景部分的顯示范圍)。這里設(shè)置的寬度值我參考他人的博客使用44f,效果還是可以的。
3.如果你的游戲允許左右轉(zhuǎn)屏,那么還要監(jiān)聽屏幕轉(zhuǎn)動事件,再根據(jù)屏幕方向去設(shè)置offsetMin或offsetMax。
最后,現(xiàn)在貌似出了一種技術(shù),可以把傳感器直接藏在透明的屏幕下方;也有廠商把傳感器放在手機(jī)夾層里,需要使用的時(shí)候再從屏幕上方彈出來。總之希望劉海屏和各種類似的Notch屏趕快淘汰,一整面完好無損的大屏才是審美,Notch什么的太逼死強(qiáng)迫癥了。