![]()
這是第441篇UWA技術(shù)知識(shí)分享的推送,精選了UWA社區(qū)的熱門(mén)話題,涵蓋了UWA問(wèn)答、社區(qū)帖子等技術(shù)知識(shí)點(diǎn),助力大家更全面地掌握和學(xué)習(xí)。
UWA社區(qū)主頁(yè):community.uwa4d.com
本期目錄:
- iOS如何確認(rèn)內(nèi)存擴(kuò)展使用生效
- Puerts-WebGL可以用微信小游戲的EmscriptenGLX渲染模式嗎
- SpriteAtlasManager.atlasRequested延后一幀回調(diào)
- 微信小游戲中如何解決內(nèi)存擴(kuò)充問(wèn)題
Platform
Q:請(qǐng)問(wèn)在iOS開(kāi)發(fā)過(guò)程中,開(kāi)啟iOS的應(yīng)用內(nèi)存擴(kuò)展功能后,是如何確認(rèn)擴(kuò)展功能生效的?目前我們?cè)陂_(kāi)啟打包后進(jìn)行使用感覺(jué)不生效,但是發(fā)布上線對(duì)外后又好像生效了。
A:如果是指的是Increased Memory Limit,該功能的生效對(duì)蘋(píng)果設(shè)備和iOS版本都有一定要求。
可參考官網(wǎng)的說(shuō)法:
An increased memory limit is only available on some device models. Call the os_proc_available_memory function to determine the amount of memory available. Higher memory use can affect system performance.
具體是否生效、效果如何,可能就要看手頭測(cè)試機(jī)內(nèi)存加壓測(cè)試中閃退閾值的變化;或線上實(shí)際閃退率了。
感謝Faust@UWA問(wèn)答社區(qū)提供了回答,歡迎大家轉(zhuǎn)至社區(qū)交流:
https://answer.uwa4d.com/question/6896bfd4682c7e5cd61bfadd
Platform
Q:請(qǐng)問(wèn)Puerts-WebGL可以用微信小游戲的EmscriptenGLX渲染模式嗎?
A1: WebGL的調(diào)用需要走WASM才可以用EmscriptenGLX。
感謝jinfei@UWA問(wèn)答社區(qū)提供了回答
A2:可以,但這個(gè)應(yīng)該沒(méi)有很實(shí)際的收益。要看你們Pure的具體用法,但是GLX主要解決的是WASM和JS的高頻通信的問(wèn)題,具體還是得看下你們的使用場(chǎng)景。
感謝yacentlin@UWA問(wèn)答社區(qū)提供了回答
A3:Puerts只是業(yè)務(wù)腳本環(huán)境,渲染還是走的WebGL,可以用GLX的。
感謝肖海@UWA問(wèn)答社區(qū)提供了回答,歡迎大家轉(zhuǎn)至社區(qū)交流:
https://answer.uwa4d.com/question/68906ae9244ce21ce9ec08e2
Editor
Q:實(shí)測(cè),觸發(fā)SpriteAtlasManager.atlasRequested回調(diào),比加載界面晚了一幀執(zhí)行,導(dǎo)致會(huì)閃一幀白圖。請(qǐng)教有何優(yōu)化辦法嗎?圖集已勾選Include in build。
A:Unity觸發(fā)SpriteAtlasManager.atlasRequested時(shí),AssetBundle系統(tǒng)還沒(méi)初始化完畢,導(dǎo)致加載不到圖集,進(jìn)去后顯示全白塊了。因?yàn)槲矣玫氖荵ooAsset插件,這個(gè)東西初始化是異步的。只有下次觸發(fā)SpriteAtlasManager.atlasRequested,才能再次加載圖集,這可能是加載一個(gè)新的SpriteAtlas、或者加載場(chǎng)景時(shí)。
解決這個(gè)的方法時(shí),在AssetBundle系統(tǒng)還沒(méi)初始化時(shí),SpriteAtlasManager.atlasRequested的請(qǐng)求先緩存起來(lái),等初始化結(jié)束后再處理。
using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.U2D; namespaceGameCore.Unity { //場(chǎng)景一加載就會(huì)unity就會(huì)觸發(fā)atlasRequested,但是這時(shí)候AssetBundle系統(tǒng)還沒(méi)初始化,無(wú)法加載圖集。 //因此等待AssetBundle初始化后加載。 //從編輯場(chǎng)景進(jìn)入游戲的話,編輯場(chǎng)景里也掛載這個(gè)組件就行了。 publicclassSpriteAtlasLoader : MonoBehaviour { //緩存Unity的請(qǐng)求 privatestatic Dictionary
requestAtlasCallbacks = new(); private IResManager resManager; //AssetBundle系統(tǒng)初始化后, 設(shè)置ResManager public void SetResManager(IResManager resManager) { this.resManager = resManager; foreach(var kv in requestAtlasCallbacks) { RequestAtlas(kv.Key, kv.Value); } requestAtlasCallbacks.Clear(); } private void OnEnable() { SpriteAtlasManager.atlasRequested += RequestAtlas; } private void OnDisable() { SpriteAtlasManager.atlasRequested -= RequestAtlas; } //AssetBundle系統(tǒng)初始化后,resManager不為null protected virtual void RequestAtlas(string atlasName, Action callback ) { if(resManager != null) { callback(ResManager.Instance.GetAsset (atlasName)); } else { requestAtlasCallbacks.Add(atlasName, callback); } } } }
因?yàn)槲矣幸粋€(gè)專(zhuān)門(mén)編輯Prefab的場(chǎng)景,可以直接從這個(gè)場(chǎng)景進(jìn)游戲,因此單獨(dú)做了一個(gè)組件,需要的場(chǎng)景里掛上就行了。
詳情可參考《Unity SpriteAtlasManager.atlasRequested趟坑》
https://blog.csdn.net/qiminixi/article/details/144762895
感謝小澤@UWA問(wèn)答社區(qū)提供了回答,歡迎大家轉(zhuǎn)至社區(qū)交流:
https://answer.uwa4d.com/question/688757d2244ce21ce9ec08dc
Platform
Q1:微信小游戲中收到內(nèi)存擴(kuò)充的告警,一般是直接擴(kuò)大JS預(yù)留內(nèi)存嗎?
內(nèi)存擴(kuò)充一般加多少內(nèi)存?現(xiàn)在內(nèi)存350MB,而且這個(gè)峰值我們線下測(cè)試都是沒(méi)達(dá)到這么多的,線上版本的Dynamic memory是1.39KMB。
這個(gè)內(nèi)存統(tǒng)計(jì)是只有Dynamic memory還是整個(gè)進(jìn)程的內(nèi)存呢?我們線下測(cè)試Dynamic內(nèi)存基本才500MB,Xcode顯示的進(jìn)程內(nèi)存才1GB左右。
A:這個(gè)量級(jí)的Dynamic memory還蠻大的,一般內(nèi)存擴(kuò)容的方式可以在項(xiàng)目設(shè)置中進(jìn)行調(diào)整,不過(guò)擴(kuò)容期間,由于會(huì)進(jìn)行內(nèi)存塊的復(fù)制,會(huì)出現(xiàn)內(nèi)存尖峰:
![]()
Q2:類(lèi)似于350MB擴(kuò)容到500MB,這個(gè)時(shí)候會(huì)產(chǎn)生一個(gè)350MB+500MB的內(nèi)存峰值嗎? 你有建議的擴(kuò)容設(shè)置嗎?比如我們項(xiàng)目有必要調(diào)整到768嗎?
A: 內(nèi)存擴(kuò)容一般不要高于1024MB都可以。
具體可以參考這篇文章:
https://unity.com/blog/engine-platform/understanding-memory-in-unity-webgl
感謝左君博@UWA問(wèn)答社區(qū)提供了回答,歡迎大家轉(zhuǎn)至社區(qū)交流:
https://answer.uwa4d.com/question/68995d63682c7e5cd61bfae1
封面圖來(lái)源于網(wǎng)絡(luò)
今天的分享就到這里。生有涯而知無(wú)涯,在漫漫的開(kāi)發(fā)周期中,我們遇到的問(wèn)題只是冰山一角,UWA社區(qū)愿伴你同行,一起探索分享。歡迎更多的開(kāi)發(fā)者加入U(xiǎn)WA社區(qū)。
UWA官網(wǎng):www.uwa4d.com
UWA社區(qū):community.uwa4d.com
UWA學(xué)堂:edu.uwa4d.com
點(diǎn)擊下方名片關(guān)注我們,將我設(shè)為星標(biāo),及時(shí)接收小編每日推送哦,性能優(yōu)化不迷路~
近期精彩回顧
【厚積薄發(fā)】
【厚積薄發(fā)】
【萬(wàn)象更新】
【萬(wàn)象更新】
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.