![]()
這是第442篇UWA技術(shù)知識分享的推送,精選了UWA社區(qū)的熱門話題,涵蓋了UWA問答、社區(qū)帖子等技術(shù)知識點,助力大家更全面地掌握和學(xué)習(xí)。
UWA社區(qū)主頁:community.uwa4d.com
本期目錄:
- 將FGUI的Shader全部預(yù)熱后,WebGL平臺沒有加載成功
- iOS如何確認(rèn)內(nèi)存擴(kuò)展使用生效
- SpriteAtlasManager.atlasRequested延后一幀回調(diào)
- Unity如何使用Java 17打包
UI
Q:將FGUI Unity中的Shader全部打包,全部加載預(yù)熱后,Shader在WebGL平臺沒有加載成功,在WebGL平臺FGUI的Shader都沒有顯示加載成功,請問是什么問題?在編輯器中加載包體預(yù)熱,Shader是顯示正常加載的。
![]()
A:FGUI添加Shader都是通過Shader.Find操作的,要讓Shader.Find這方法能找到,需要執(zhí)行以下操作之一:
1. 從場景中使用的某些材質(zhì)中引用它;
2. 將其添加到ProjectSettings/Graphics中的“始終包含的著色器”列表中;
3. 將著色器或引用它的對象(例如材質(zhì))放入“Resources”文件夾中。
感謝題主K了個O@UWA問答社區(qū)提供了回答,歡迎大家轉(zhuǎn)至社區(qū)交流:
https://answer.uwa4d.com/question/689c51b6682c7e5cd61bfaf3
Platform
Q:請問在iOS開發(fā)過程中,開啟iOS的應(yīng)用內(nèi)存擴(kuò)展功能后,是如何確認(rèn)擴(kuò)展功能生效的?目前我們在開啟打包后進(jìn)行使用感覺不生效,但是發(fā)布上線對外后又好像生效了。
A:如果是指的是Increased Memory Limit,該功能的生效對蘋果設(shè)備和iOS版本都有一定要求。
可參考官網(wǎng)的說法:
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.
具體是否生效、效果如何,可能就要看手頭測試機(jī)內(nèi)存加壓測試中閃退閾值的變化;或線上實際閃退率了。
感謝Faust@UWA問答社區(qū)提供了回答,歡迎大家轉(zhuǎn)至社區(qū)交流:
https://answer.uwa4d.com/question/6896bfd4682c7e5cd61bfadd
Editor
Q:實測,觸發(fā)SpriteAtlasManager.atlasRequested回調(diào),比加載界面晚了一幀執(zhí)行,導(dǎo)致會閃一幀白圖。請教有何優(yōu)化辦法嗎?圖集已勾選Include in build。
A:Unity觸發(fā)SpriteAtlasManager.atlasRequested時,AssetBundle系統(tǒng)還沒初始化完畢,導(dǎo)致加載不到圖集,進(jìn)去后顯示全白塊了。因為我用的是YooAsset插件,這個東西初始化是異步的。只有下次觸發(fā)SpriteAtlasManager.atlasRequested,才能再次加載圖集,這可能是加載一個新的SpriteAtlas、或者加載場景時。
解決這個的方法時,在AssetBundle系統(tǒng)還沒初始化時,SpriteAtlasManager.atlasRequested的請求先緩存起來,等初始化結(jié)束后再處理。
using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.U2D; namespaceGameCore.Unity { //場景一加載就會unity就會觸發(fā)atlasRequested,但是這時候AssetBundle系統(tǒng)還沒初始化,無法加載圖集。 //因此等待AssetBundle初始化后加載。 //從編輯場景進(jìn)入游戲的話,編輯場景里也掛載這個組件就行了。 publicclassSpriteAtlasLoader : MonoBehaviour { //緩存Unity的請求 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); } } } }
因為我有一個專門編輯Prefab的場景,可以直接從這個場景進(jìn)游戲,因此單獨做了一個組件,需要的場景里掛上就行了。
詳情可參考《Unity SpriteAtlasManager.atlasRequested趟坑》
https://blog.csdn.net/qiminixi/article/details/144762895
感謝小澤@UWA問答社區(qū)提供了回答,歡迎大家轉(zhuǎn)至社區(qū)交流:
https://answer.uwa4d.com/question/688757d2244ce21ce9ec08dc
Platform
Q:Unity如何使用Java 17打包,目前設(shè)置Java 17后Unity會提示錯誤,如何強制設(shè)置Java 17?
A:升級Unity版本或者用Unity導(dǎo)出AndroidStudio工程,在AndroidStudio中使用Java 17出包。
詳情可參考《 Unity2022接入Google廣告與支付SDK、導(dǎo)出工程到Android Studio使用JDK17進(jìn)行打包完整流程與過程中的相關(guān)錯誤及處理經(jīng)驗總結(jié) 》
https://blog.csdn.net/GLYX5717/article/details/144869312
感謝hcg@UWA問答社區(qū)提供了回答,歡迎大家轉(zhuǎn)至社區(qū)交流:
https://answer.uwa4d.com/question/682d72a9682c7e5cd61bfa7d
封面圖來源于網(wǎng)絡(luò)
今天的分享就到這里。生有涯而知無涯,在漫漫的開發(fā)周期中,我們遇到的問題只是冰山一角,UWA社區(qū)愿伴你同行,一起探索分享。歡迎更多的開發(fā)者加入UWA社區(qū)。
UWA官網(wǎng):www.uwa4d.com
UWA社區(qū):community.uwa4d.com
UWA學(xué)堂:edu.uwa4d.com
點擊下方名片關(guān)注我們,將我設(shè)為星標(biāo),及時接收小編每日推送哦,性能優(yōu)化不迷路~
近期精彩回顧
【厚積薄發(fā)】
【學(xué)堂上新】
【厚積薄發(fā)】
【厚積薄發(fā)】
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(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.