真3D麻将游戏桌面适配任意分辨率
?
大部分同學應該都處理過2D麻將桌的適配,從iPhoneX(目前最長的移動設備)到iPad(目前最短的移動設備)
無非就是根據長寬比來選擇最適合的適配方式。麒麟子之前寫過一遍,傳送門:棋牌UI全分辨率適配方案
但3D的適配則不是通過縮放來的,因為3D看到的畫面,大部分是調整攝相機參數得來的。我們常見的設備有以下分辨率
2.16 : 1? iPhoneX系列為代表
2:1 華為、小米等2018年后出的Android手機為代表
16:9 蘋果6以及同時期的Android手機為代表
1024:768 iPad為代表。
麒麟子打開了麻將的代表作,歡樂麻將。在不同設備下玩了一圈后總結出了歡樂麻將的適配規則。
1、設計分辨率是 16:9, (常見的就是1280 x 720)
2、在寬于16:9的設備上,它什么都沒做,只是簡單地把桌面保持左右撐滿。
3、在高于16:9的設備上,它會保持左右兩邊不變,讓高顯示得更多一點。
要實現以上目標,我們需要做如下處理就行。
1、U3D編輯器中,使用16:9的預覽窗口,調整好攝相機和畫面。
2、切換為1024x768的分辨率,保持攝相機不動(最好是在運行模式下調,這樣16:9的參數就不會影響),調整好桌面的縮放和位置。
3、記錄下1024x768的參數 縮放和位移。
4、在代碼中,通過真實橫縱比(寬/高)?與 設計橫縱比(1280/720) 進行比較
a、如果更寬(真實橫縱比 > 設計橫縱比),則將背景的scaleX放大,放大倍數 = 真實橫縱比 / 設計橫縱比。
b、如果更高(真實橫縱比 > 設計橫縱比),則將桌面縮小和位移。
縮小的方式就是插值, 設計分辨率下的縮放和位移,我們作為初值,1024 x 768下的值作為目標值(剛剛U3D編輯器中編輯的時候,我們需要把這個值記下來)。 插值的計算如下:(代碼中的Laya.stage.height / Laya.stage.width 就是真實高/真實寬,大家根據自己用的引擎來調整 即可)
let fromRatio = 720 / 1280;let targetRatio = 768 / 1024;let curRatio = Laya.stage.height / Laya.stage.width;let factor = (curRatio - fromRatio) / (targetRatio - fromRatio);有了這個factor我們只需要做一個線性插值,就能得到不同分辨率下的桌面縮放和位移了。
最后上幾張圖
iPhone6/7/8效果 iPhoneX效果?
iPad效果代碼與工程相關比較多,不方便抽出來,如果有需要的朋友,可以聯系我一起探討。
總結
以上是生活随笔為你收集整理的真3D麻将游戏桌面适配任意分辨率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu连不上校园网
- 下一篇: android多级列表