最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【UE4】新買(mǎi)的紅米K50和一加Ace Pro安裝UE4打包的程序,居然沒(méi)法全屏

2023-01-14 19:18 作者:天空游蕩的魚(yú)  | 我要投稿

問(wèn)題描述:

最近新買(mǎi)了RedMi K50和一加Ace Pro兩臺(tái)機(jī)器,一臺(tái)是Android13,一臺(tái)是Android12。以前UE4.26打包的程序,不論是劉海屏還是挖孔屏,都是可以全屏的。但安裝到這兩臺(tái)機(jī)器上竟然不能全屏。正好是劉海和挖孔的位置被留了出來(lái)。

UE中如何全屏Android應(yīng)用

在UE4/UE5中,Android應(yīng)用的全屏需要設(shè)置兩個(gè)位置,如下圖中紅框部分。

第一, 最大寬高比默認(rèn)是2.1,隨著市場(chǎng)上屏幕越來(lái)越多,該值可能要放大,例如我就設(shè)置為了2.3.

第二,勾選是否使用cutout。通俗點(diǎn)講,就是你的APP是否要使用劉?;蛘咄诳椎牟糠帧?/p>

設(shè)置完成之后在A(yíng)ndroid的Manifest文件中會(huì)生成下面兩項(xiàng):

不出意外的話(huà),你的App可以全屏了。


出現(xiàn)問(wèn)題的原因

通過(guò)測(cè)試發(fā)現(xiàn),相同的手機(jī),用UE4.26和UE5打包結(jié)果完全不同。UE5不會(huì)有任何問(wèn)題。但UE4.26在文中提到的兩部手機(jī)就不會(huì)全屏顯示了。

既然通過(guò)ProjectSetting修改的是上面提到的兩項(xiàng)Manifest配置。那我們就打開(kāi)Android Studio工程看看。差異是什么。


通過(guò)查看Android Studio工程代碼,可以看到,是否使用劉海就在于下面這幾行代碼


所以,只要UseDisplayCutout為true,應(yīng)該不會(huì)出問(wèn)題吧?那就去找找該值在哪里設(shè)置的。

通過(guò)翻查代碼,該值有兩個(gè)地方設(shè)置

  1. 如果有閃屏界面,是通過(guò)閃屏界面?zhèn)鬟f給GameActivity

  2. 如果沒(méi)有閃屏界面,該值是直接從Manifest獲取的

那閃屏界面又是從哪里獲取的呢?截取部分閃屏界面代碼,可以看到同樣是從Manifest獲取的。并且還加了一些手機(jī)型號(hào)的判斷,進(jìn)而最終確認(rèn)。

這段代碼UE4和UE5是有區(qū)別的。UE5默認(rèn)值是通過(guò)boolean BlockDisplayCutout = android.os.Build.VERSION.SDK_INT < 30;判斷,但UE4是默認(rèn)為true,后面再通過(guò)手機(jī)型號(hào)判斷是否需要忽略Cutout的配置。

從代碼中可以看到,閃屏同樣會(huì)設(shè)置是否使用劉海后者挖孔。

兩種解決方法

如果你的項(xiàng)目就是UE4開(kāi)發(fā)的,并且不想升級(jí)到UE5。畢竟升級(jí)是有代價(jià)和風(fēng)險(xiǎn)的。那么可以嘗試這兩種方法。

  1. 通過(guò)UPL修改為全屏

  2. 通過(guò)修改閃屏界面代碼

1. 通過(guò)UPL修改

這種方式需要你對(duì)UPL了解,前面提到一個(gè)教程會(huì)告訴你如何在UE4、UE5中進(jìn)行Android開(kāi)發(fā)。

前面提到了全屏關(guān)鍵的幾行代碼,我們只需要在UPL里將那幾行代碼插入即可。但只能修改GameActivity,閃屏界面還是不能全屏,所以在項(xiàng)目設(shè)置里取消顯示閃屏界面。自己開(kāi)發(fā)一個(gè)閃屏界面。

然后在UPL文件中插入以下代碼,將java代碼插入到GameActivity的OnCreate中。這樣游戲界面就可以全屏了。

這種方法有個(gè)缺陷,就是前面提到的閃屏界面需要特殊處理。(如果你會(huì)接入SDK,那這也不是個(gè)事)

2. 通過(guò)修改閃屏代碼

這種方法比較直接和粗暴,但效果甚好。UE4、UE5打包Android生成了這么多代碼,總有地方去修改這些代碼吧。找到他們不就好了。

生成的Android工程代碼

不論是GameApplication也好,GameActivity也好。還是SplashActivity。他們都是在UBT的時(shí)候生成。在UBT里有一份Android打包的代碼UEBuildAndroid.cs、UEDeployAndroid.cs有興趣可以去翻翻。

這里直接說(shuō)結(jié)果,Engine\Build\Android\Java\src\com\epicgames\ue4到這里取找SplashActivity可以看到,就是完整的代碼,并不是模板。那我們將該代碼中關(guān)于是否忽略UseDisplayCutout的代碼修改成與UE5一樣就可以了。boolean BlockDisplayCutout = android.os.Build.VERSION.SDK_INT < 30;


這種方法修改了引擎原本的內(nèi)容,一定要記好。不然更新或升級(jí)的時(shí)候出Bug就不好了。

重新打包試試,問(wèn)題完美解決。


【UE4】新買(mǎi)的紅米K50和一加Ace Pro安裝UE4打包的程序,居然沒(méi)法全屏的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
凯里市| 平南县| 遂昌县| 五大连池市| 墨玉县| 阿克| 平顶山市| 句容市| 正阳县| 阿尔山市| 成都市| 类乌齐县| 大埔县| 龙岩市| 出国| 渑池县| 龙胜| 双流县| 霍州市| 安宁市| 白城市| 上思县| 绥化市| 北海市| 洛阳市| 得荣县| 务川| 承德市| 于都县| 鄄城县| 兴义市| 赫章县| 尼玛县| 什邡市| 友谊县| 南京市| 白沙| 泾阳县| 同德县| 香港 | 雷波县|