資源管理

Q1:iOS上PVRTC不支持NPOT的貼圖壓縮喇潘,在Android上可以用ETC2,但在iOS上不能壓縮遵堵,內(nèi)存消耗大箱玷。請問在iOS上有沒有好的處理方案?

ETC2僅能在支持OpenGL ES3.0的手機上進行使用陌宿,請研發(fā)團隊在使用前謹慎考察支持ES3.0的手機在國內(nèi)的覆蓋范圍锡足。
PVRTC不支持NPOT的貼圖壓縮,這是Apple規(guī)定的壳坪,上層應用無權對此更改舶得。我們僅能建議將紋理盡可能做成POT形式,否則只能接受內(nèi)存較大的開銷爽蝴,沒有其他更好的辦法沐批。

Q2:Unity對Dynamic Batching的數(shù)量是否有限制?或者說對Saved by Batch的數(shù)量是否有限制蝎亚?

Unity對于任何Mesh的面片都有65536的個數(shù)限制九孩,拼合后的面片數(shù)也是如此。

Q3:請問游戲中特效使用的很多貼圖, 一般有什么好的方式去管理嗎 ? 不合并圖集的話會有上千張小的透明貼圖, 合并圖集又會有占用內(nèi)存過多的問題发框。

可以合并成Atlas躺彬,一般將盡可能同時出現(xiàn)頻率較高的Texture合成Atlas,這樣并不會造成內(nèi)存過大梅惯。在這方面也可以參考我們前不久推薦的插件Mesh Baker宪拥。

Q4:在同一場景里烘培的Lightmap,我用了2張10241024的光照圖个唧,大小是5.3MB江解;別人用了3張10241024的圖,大小是4.3MB徙歼。請問是什么影響這個光照圖的大小犁河,在哪里調(diào)鳖枕?

首先,請確認下Lightmap的類型桨螺,Single類型只生成一張宾符,而Dual和Directional會生成兩張。 其次灭翔,請確認下當前的發(fā)布平臺魏烫,Android下的Lightmap會比Standalone更小。因為不同平臺采用的壓縮格式不同肝箱。此外哄褒,Lightmapping中的Lock Atlas,Resolution煌张,Padding等選項也會影響最后烘焙光照圖的大小呐赡。

Q5:我們打出來的ipa包大概有220MB ,相同的資源APK包只有120MB左右骏融, 相差100多MB 链嘀。我們查過網(wǎng)上其他已上市游戲的ipa,apk兩個包,兩個包體都只相差15~30MB档玻,請問我們這種情況是否正常怀泊,有沒有辦法進一步壓縮ipa安裝包?

首先误趴,放在項目工程Resources文件夾下的文件都會被打包進resources.assets霹琼,為了減小發(fā)布包的大小,在發(fā)布的時候請?zhí)蕹齊esources里以及streamingassets里不必要的文件冤留。
其次Unity有篇官方文檔碧囊,專門介紹了如何減小發(fā)布包的體積树灶。

Q6:下圖一是剛進游戲時獲取的信息纤怒,第二張是開關幾次同一個UI界面后獲取,對比兩圖我們發(fā)現(xiàn)有多份重復的Texture天通。請問這是為什么泊窘?我們的加載方式是UI通過AssetBundle加載,加載后會釋放AssetBundle像寒,然后再次加載 UI 就會造成紋理資源的冗余烘豹。
(圖我省略了)

<ul><li>剛進游戲時獲取的圖中出現(xiàn)的“重復”資源可能并不是冗余,因為 Atlas的一個 Group 中可能包含多張一樣大小的Page(即紋理)诺祸,而這幾個Page在內(nèi)存中的名字是一樣的携悯。</li><li>但是,如果同一UI界面多次開啟后筷笨,內(nèi)存中出現(xiàn)了更多同樣的資源憔鬼,則說明UI的管理方式存在一定問題龟劲。對于頻繁使用的UI,我們建議在加載之后通過緩沖池對其進行緩存轴或,后續(xù)使用時昌跌,直接通過緩沖池獲取即可。而不要每次均通過AssetBundle進行加載照雁,這種做法既會造成更大的CPU占用蚕愤,同樣會很大幾率造成資源的冗余。</li><li>同時饺蚊,如果多次開啟的是不同UI界面萍诱,并且造成內(nèi)存中同種資源的增加,則很有可能是UI在AssetBundle打包時形成了冗余(這種情況在目前的UGUI系統(tǒng)中較為常見)污呼。對此砂沛,如果開發(fā)團隊使用的是UGUI,那么我們的建議如下:</li>1.對于使用Unity 5.x的新AssetBundle打包系統(tǒng)曙求,則打包時盡可能將同種Atlas的UI界面打成一個AssetBundle文件碍庵,否則將很有可能出現(xiàn)資源冗余的情況;
2.對于使用Unity 4.x的老AssetBundle打包系統(tǒng)悟狱,則可以將一個含有Atlas的Prefab(或其他Object)先打包静浴,其他UI元素對其進行依賴即可。
此外挤渐,開發(fā)團隊可以考慮用 WWW.LoadFromCacheOrDownload 來加載共享包苹享,因為 new WWW 的方式會在內(nèi)存中形成 WebStream 造成較多的內(nèi)存開銷。關于該函數(shù)的具體優(yōu)劣浴麻,開發(fā)者可以參考你應該知道的AssetBundle管理機制得问。</ul>

Q7: 請問粒子特效的Shader是否不能使用依賴打包? 我們對Shader的模型和特效使用了依賴打包软免,運行的時候發(fā)現(xiàn)模型顯示是正常的宫纬,但是粒子特效使用的Shader就不能正常運行,特效顯示不正常膏萧。而在編輯器中漓骚,我們看到Material中的Shader是存在的。這時候如果重新手動給這個Material指定同樣的Shader榛泛,這個粒子特效就能正常顯示蝌蹂,請問這是什么原因引起的?

部分 Shader 在打包到 Android 版本的 Assetbundle 之后曹锨,會因為平臺不兼容而無法正確顯示孤个,這是因為打包后的 Shader 代碼只保留了目標平臺的預編譯代碼,不一定能夠在 Editor 下運行沛简,所以這是正称肜穑現(xiàn)象硅急。 但這并不會影響依賴打包,因為在真機上并不會出現(xiàn)類似的問題佳遂。

Q8: iOS平臺需要對圖集做RGB和Alpha通道的分離嗎营袜?我發(fā)現(xiàn)在同樣大小的圖片(正方形),RGB Compressed PVRTC 4bits和RGBA Compressed PVRTC 4bits兩種格式丑罪,占用內(nèi)存是一樣的荚板,如果把一張圖片分成兩張,那么在iOS平臺是不是占用內(nèi)存多一倍吩屹?有透明通道的跪另,對于它的圖集怎么處理會更好一點?

通常iOS下是不需要做通道分離的煤搜,因為 iOS 通用的 PVRTC 格式支持 Alpha 通道免绿。但目前也有團隊反饋,在 iOS 上進行通道分離有助于減少失真擦盾,可以在一定程度上提高視覺效果嘲驾,因此也可以嘗試做一個對比。
如果發(fā)現(xiàn)占用內(nèi)存是一樣的迹卢,那么原始圖片是RGB的辽故。如果iOS上做通道分離,內(nèi)存確實會增加一倍腐碱。UI的紋理在iOS下可以直接選擇默認的 Compress誊垢,在打Atlas時會自動處理成 PVRTC,開發(fā)團隊可以從Sprite packer窗口來看Atlas的壓縮格式做個確認

Q9:我有一個UI預設症见,它使用了一個圖集喂走, 我在打包的時候把圖集和UI一起打成了AssetBundle。我在加載生成了GameObject后立刻卸載了AssetBundle對象谋作, 但是當我后面再銷毀GameObject的時候發(fā)現(xiàn)圖集依然存在芋肠,這是什么情況呢?

這是很可能出現(xiàn)的瓷们。unload(false)卸載AssetBundle并不會銷毀其加載的資源 业栅,是必須調(diào)用 Resources.UnloadUnusedAssets才行秒咐。關于AssetBundle加載的詳細解釋可以參考我們之前的文章:你應該知道的AssetBundle管理機制谬晕。

Q10:Prefab中的GameObject的tag設置為EditorOnly仍然會被打進Resoures包嗎?有其它EditorOnly方案嗎携取?

EditorOnly理論上只對場景中的 GameObject起效攒钳。因此 Project 目錄中的 Prefab 打上 EditorOnly 后,放在 Resources 目錄下依然會被打進游戲包中雷滋。但只要將其放在 Resources 目錄以外不撑,則其就會因為沒有場景中的物件引用而被排除在外文兢。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市焕檬,隨后出現(xiàn)的幾起案子姆坚,更是在濱河造成了極大的恐慌,老刑警劉巖实愚,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兼呵,死亡現(xiàn)場離奇詭異,居然都是意外死亡腊敲,警方通過查閱死者的電腦和手機击喂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碰辅,“玉大人懂昂,你說我怎么就攤上這事∶槐觯” “怎么了凌彬?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長循衰。 經(jīng)常有香客問我饿序,道長,這世上最難降的妖魔是什么羹蚣? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任原探,我火速辦了婚禮,結果婚禮上顽素,老公的妹妹穿的比我還像新娘咽弦。我一直安慰自己,他們只是感情好胁出,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布型型。 她就那樣靜靜地躺著,像睡著了一般全蝶。 火紅的嫁衣襯著肌膚如雪闹蒜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天抑淫,我揣著相機與錄音绷落,去河邊找鬼。 笑死始苇,一個胖子當著我的面吹牛砌烁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼函喉,長吁一口氣:“原來是場噩夢啊……” “哼避归!你這毒婦竟也來了?” 一聲冷哼從身側響起管呵,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤梳毙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后捐下,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顿天,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年蔑担,在試婚紗的時候發(fā)現(xiàn)自己被綠了牌废。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡啤握,死狀恐怖鸟缕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情排抬,我是刑警寧澤懂从,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蹲蒲,受9級特大地震影響番甩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜届搁,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一缘薛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卡睦,春花似錦宴胧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞬逊,卻和暖如春显歧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背确镊。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工士骤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骚腥。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓敦间,卻偏偏與公主長得像,于是被迫代替她去往敵國和親束铭。 傳聞我的和親對象是個殘疾皇子廓块,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容