TextMeshPro备用字体疑问
1)TextMeshPro備用字體疑問
?2)iOS的部分語言的float分隔符變成了逗號
3)ASTC格式支持與官方文檔不符
4)關于音效背景音樂的音頻文件的格式設置請教
5)LightProbe的信息位置
這是第269篇UWA技術知識分享的推送。今天我們繼續為大家精選了若干和開發、優化相關的問題,建議閱讀時間10分鐘,認真讀完必有收獲。
UWA 問答社區:answer.uwa4d.com
UWA QQ群2:793972859(原群已滿員)
Text
Q:TextMeshPro設置的Fallback “字體B”, 文本字體是“字體A”,如果文本顯示的字符都是字體A的,CPU會不會收集字體B的貼圖信息數據發送給GPU用來渲染?
不是很理解這個Fallback字體,發現字體A、字體B都在內存中,也就是說其實都是關聯上的。是不是所有的后備字體都會在內存中出現?
A:問題一:TMP中所謂Fallback,也就是后備字體,其含義在于當實際使用中出現了當前字體所不支持的字符時,按照:主字體(也就是當前字體)、主字體的后備字體、后備字體的后備字體、通用后備字體、通用后備字體的后備字體、通用默認字體、通用默認字體的后備字體等等的序列遍歷所有設置的后備字體,直到找到能夠支持的字體為止。
所以,引擎只有在內存中保留Fallback字體資源,才能在當前字體無法顯示所有字符時采用Fallback字體。問題中提到的字體B也在內存中是合理的。
當然,如果開發者能確定字體A可以支持項目中出現的所有字體,那么完全可以檢查Project Settings中全局的Default Font Asset、全局的Fallback Font Assets List、字體A的Fallback Font Assets,以上三處設置為空,則可以一定程度上節省內存。
問題二:我補充做了實驗。對照情況是用某一種主字體顯示“New Text”這一串字符,顯然足夠支持、而內存中也只有該主字體。然后在剛才提到的主字體的后備字體、后備字體的后備字體、通用后備字體、通用后備字體的后備字體、通用默認字體、通用默認字體的后備字體這個序列的每個環節加上不同的字體,顯然它們沒有被實際用到,但都進入內存了。List里面有幾種字體也是一樣。
感謝Faust@UWA問答社區提供了回答,歡迎大家轉至社區交流:
LightProbe的信息存在哪兒? -- UWA問答:幫助開發者找到更好的答案
iOS
Q:最近我們打包的時候發現,在iOS設備上,部分語言的小數的分隔符變成了逗號,比如俄羅斯語。后來發現是因為CurrentCulture變成了設備的語言,Android和之前的iOS設備都是en-US,也就導致了讀取配置時用float.TryParse會轉換失敗。
我們的Unity版本是2018.4.33,目前還沒有定位是什么原因導致的,不知道有沒有人碰到過?如果在游戲啟動時強制把CurrentCulture改成英語不知道可不可行?
A:我們項目踩過這個坑,原因就是一些語言里面小數點分隔符不一樣,比如法語里分隔符是逗號,屬于文化差異。解決方案是游戲啟動時設置CurrentCulture為CultureInfo.InvariantCulture:
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;參考鏈接:CultureInfo.InvariantCulture
感謝張迪@UWA問答社區提供了回答,歡迎大家轉至社區交流:
LightProbe的信息存在哪兒? -- UWA問答:幫助開發者找到更好的答案
Texture
Q:ASTC格式支持與官方文檔不符,根據官方文檔(Unity - Manual: Recommended, default, and supported texture compression formats, by platform)。理論上我們的測試機中,紅米2是不支持的ASTC格式的。但實際測試中發現,它是支持的。這是怎么一回事?
A:之前做過相關的測試,紅米2(Adren 302)是支持ASTC的,但紅米Note2(PowerVR Rogue G6200)是不支持的。并且從Unity 2017.4的Profiler中可以看到紋理的大小是正確的。
這和官方提供的:tvOS (all), iOS (A8), Android (PowerVR 6XT, Mali T600 series, Adreno 400 series, Tegra K1)不符。
從目前的測試來看,可以認為實際支持情況和文檔提供的GPU型號并不完全一致。在不支持的機型上會軟解成RGBA32或RGB24,實際內存也是一樣。
感謝OCEAN@UWA問答社區提供了回答,歡迎大家轉至社區交流:
LightProbe的信息存在哪兒? -- UWA問答:幫助開發者找到更好的答案
Audio
Q:在UWA的報告中看到要用Streaming的方式讀取音頻。想問一下關于音頻格式,有優化角度比較全的建議嗎?
之前項目里的設置大概是這樣子的,合適嗎?大家常見的做法是怎樣的?有沒有一個相對合理的經驗值,比如10s的音效大小在100KB這樣的參考值?
A:并不推薦使用MP3播放音樂,原因是使用MP3制作素材會無法避免在循環點引入空白音頻,參見:Is it possible to loop MP3 without gaps? - Sound Design Stack Exchange
之前使用過類似于MP3Loop的小工具,但是編碼質量也無法控制,最后選擇用Ogg(Vorbis)一了百了。
早一些的開發者(1990-2000年前后)會采用MIDI,但MIDI只是記錄音樂信息用的格式,實際發聲取決于所使用的音源,而音源設計通常會傾向于大而全所以為了有限的MIDI音樂加載完整的音源也會造成資源冗余。
關于PCM或者ADPCM,通常被稱為WAV及“三分之一的WAV”,可以根據音效具體內容來決定優化策略,有一個概念需要了解——奈奎斯特采樣定理。
簡單講,如果一個聲音比較低沉,那么可以適當降低采樣率來提升PCM或者ADPCM的“壓縮比”,這樣可以既保留PCM/ADPCM的低功耗和快速響應,又降低資源占用。假設一個聲音比較明顯的能量都分布在4000hz之下,那么只需要8000hz的采樣率就可以非常好的記錄及還原這個聲音了。
事實上Unity原聲音頻最理想的音樂格式是Tracker Module,只是國內開發者了解Demo Scene的比較少,音樂創作者為此類格式創作的經驗也非常稀少。
這里貼一個Tracker音樂的外網視頻連接,大家可以聽一下看看會不會喚起一些童年回憶:https://www.youtube.com/watch?v=gHQYYh7J1O4
翻譯了Unity官方十一年前的一篇Blog:《.mod in Unity》
文章的中文翻譯可以戳原問答查看。
幾個常用Tracker音樂制作軟件的網站鏈接:OpenMPT,MilkyTracker,schismtracker。有興趣的朋友可以嘗試一下用這種古老的格式創作音樂,可以做到既不犧牲音質也不占用多少空間。
關于進一步的音頻優化技巧,個人比較推薦刷一遍Wwise的251認證課程內容,免費而且實際上都是些通用的技巧:Courses
感謝Icarus@UWA問答社區提供了回答,歡迎大家轉至社區交流:
LightProbe的信息存在哪兒? -- UWA問答:幫助開發者找到更好的答案
Rendering
Q:場景中的LightProbe信息是保存在lightingData.asset文件中嗎?
A1:如果要保存,可以考慮這樣存:
AssetDatabase.CreateAsset(Instantiate(LightmapSettings.lightProbes), “Assets/lightProbe.asset”);
感謝蕭小俊@UWA問答社區提供了回答
A2:不確定,lightingData.asset中主要存放Lightmap的對應關系,但LightProbe是否也在里面就不確定了。
感謝OCEAN@UWA問答社區提供了回答
A3:對于LightProbes更多的操作可以參考這篇文章:《聊聊LightProbe原理實現以及對LightProbe數據的修改》
感謝Xuan@UWA問答社區提供了回答,歡迎大家轉至社區交流:
LightProbe的信息存在哪兒? -- UWA問答:幫助開發者找到更好的答案
20210927
更多精彩問題等你回答~
封面圖來源于網絡
今天的分享就到這里。當然,生有涯而知無涯。在漫漫的開發周期中,您看到的這些問題也許都只是冰山一角,我們早已在UWA問答網站上準備了更多的技術話題等你一起來探索和分享。歡迎熱愛進步的你加入,也許你的方法恰能解別人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官網:www.uwa4d.com
官方技術博客:blog.uwa4d.com
官方問答社區:answer.uwa4d.com
UWA學堂:edu.uwa4d.com
官方技術QQ群:793972859(原群已滿員)
總結
以上是生活随笔為你收集整理的TextMeshPro备用字体疑问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java编程思想--final关键字
- 下一篇: Python 从零开始制作自己的声音 -