国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity 性能優(yōu)化二:內(nèi)存問題

這篇具有很好參考價(jià)值的文章主要介紹了Unity 性能優(yōu)化二:內(nèi)存問題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

策略導(dǎo)致的內(nèi)存問題

GFX內(nèi)存

紋理資源

壓縮格式

Mipmap

網(wǎng)格資源

Read/Write

頂點(diǎn)數(shù)據(jù)

骨骼

靜態(tài)合批

Shader資源

Reserved Memory

RenderTexture

動(dòng)畫資源

音頻資源?

字體資源

粒子系統(tǒng)資源

Mono堆內(nèi)存


策略導(dǎo)致的內(nèi)存問題

1. Assetbundle 打包的時(shí)候,單個(gè)資源被重復(fù)打包,可以把依賴的資源,單個(gè)打包,通過AssetBundleBrowser 可以查看Assetbundle里面的資源情況,地址:Unity Technologies · GitHub

2. 代碼使用不當(dāng),資源加載后沒有及時(shí)銷毀,比如:

            var gos = Resources.Load<GameObject>("Sphere");
            GameObject go = Instantiate(gos);
            Material ma = go.GetComponent<Renderer>().material;
            ma.color = new Color(1, 0.5f, 0.5f);
            
            //Destroy(ma);
            Destroy(go);

?在內(nèi)存里面還是會(huì)存在一份material,因?yàn)槊看卧O(shè)置color的時(shí)候,都是創(chuàng)建了一個(gè)新的material

3. Assetbundle 的卸載不當(dāng),導(dǎo)致資源冗余,Unload(false),會(huì)把加載的assetbundle 卸載,但從里面加載的資源還在,Unload(true),都會(huì)卸載

GFX內(nèi)存

GFX內(nèi)存(Graphics)是指圖形處理器(GPU)的專用內(nèi)存,用于存儲(chǔ)圖形數(shù)據(jù)和計(jì)算所需的臨時(shí)數(shù)據(jù)。

紋理資源

壓縮格式

1. 圖片在導(dǎo)入unity的時(shí)候,會(huì)轉(zhuǎn)換成unity識(shí)別的的格式,比如jpg,png,這些是在硬盤上存儲(chǔ)的格式,但不能不GPU直接讀取,所以導(dǎo)入的時(shí)候會(huì)轉(zhuǎn)換成ETC、ASTC 格式

2. 圖片壓縮的好處:

減少占用內(nèi)存、減少帶寬、減少加載時(shí)間

3. 如果圖片的壓縮格式,在該平臺(tái)上不支持,會(huì)轉(zhuǎn)換成RGBA格式,即不壓縮

4. Android支持ETC/ASTC; IOS 支持 ASTC/PVRTC; PC 支持DTX

5. ASTC 可以調(diào)節(jié)壓縮塊的大小,來調(diào)節(jié)壓縮比例,因?yàn)锳STC 是以固定128bit 來存儲(chǔ)一個(gè)塊的,塊里面的像素越多,壓縮比例就越大,因?yàn)槠綌偟矫總€(gè)像素的存儲(chǔ)空間越少,比如4x4,6x6,8x8

Mipmap

1. mipmap 的好處及壞處

好處:減少帶寬? 壞處:增加內(nèi)存

2. 原理

存儲(chǔ)的圖片內(nèi)存是等比數(shù)列,1、1/4、1/16......,內(nèi)存和是原來的4/3倍,也就是內(nèi)存增加了1/3

3. 對(duì)于2D 界面,因?yàn)閿z像機(jī)距離不會(huì)發(fā)生變化,所以要關(guān)閉mipmap,3D 物體或UI可以根據(jù)情況開啟Mipmap

4. 通過Texture Quality 改變加到到內(nèi)存的Mipmap的數(shù)量,從而實(shí)現(xiàn)不同性能的機(jī)器,配置不一樣

通過Edit-Project Settings-Quality--Textures修改,只對(duì)開啟了Mipmap的紋理生效,里面的FullRes、HalfRes 等內(nèi)存依次降低為原來的1/4

5. Texture Streamming 動(dòng)態(tài)改變加載到內(nèi)存的Mipmap的數(shù)量

只對(duì)動(dòng)態(tài)加載的Mipmap紋理有效,比如assetbundle加載,如果場景已經(jīng)存在該紋理,且通過加載場景的方式加載,Texture Streamming則不會(huì)生效,因?yàn)榧y理已經(jīng)存在了,無法動(dòng)態(tài)改變

紋理加載會(huì)根據(jù)物體和攝像機(jī)的位置,動(dòng)態(tài)實(shí)時(shí)的去ab包內(nèi)加載Mipmap

生效條件:紋理開啟texture streaming 和 generate Mipmap

Unity 性能優(yōu)化二:內(nèi)存問題,unity,游戲引擎

MaxLevelReduction(最多裁剪的層級(jí)) 的優(yōu)先級(jí)>Memroy Budget (mipmap 占用的最大內(nèi)存)

網(wǎng)格資源

Read/Write

CPU和CPU會(huì)各占一份內(nèi)存,如果不需要在代碼中修改mesh,就不要開啟該選項(xiàng)

頂點(diǎn)數(shù)據(jù)

一份網(wǎng)格的頂點(diǎn)數(shù)據(jù)有很多,比如position、color、tangent等,但是切線一般是在計(jì)算光照的時(shí)候才用,可以在導(dǎo)入模型的時(shí)候,model 欄下,設(shè)置tangent為none,也可以通過projectsetting里面開啟optimize mesh data,它會(huì)裁剪沒有用到的頂點(diǎn)屬性,需要測試

骨骼

如果模型不需要骨骼數(shù)據(jù),則在模型導(dǎo)入的RIG欄,設(shè)置animation type為none

靜態(tài)合批

會(huì)增加內(nèi)存,空間換時(shí)間

Shader資源

1. shader占用的內(nèi)存,只要是shader變體,每一個(gè)變體都會(huì)產(chǎn)生一個(gè)shader,加載到內(nèi)存里面

2. 游戲初始化的時(shí)候一般需要提前把渲染要使用的Shader全部都加載進(jìn)來,以降低游戲運(yùn)行時(shí)及時(shí)加載和編譯帶來的卡頓,這時(shí)候我們可以調(diào)用Shader.WarmupAllShaders來把當(dāng)前已經(jīng)加載到內(nèi)存的Shader全部編譯一次,包含所有的變體。

3. 隨著項(xiàng)目渲染效果的豐富,Shader變體變得越來越多,粗暴的調(diào)用全加載接口,會(huì)導(dǎo)致游戲的啟動(dòng)時(shí)間變得更長,影響游戲體驗(yàn)。

4. 后來Unity加入了變體集合ShaderVariantCollection來取代上面的粗暴全加載接口,達(dá)到按需加載,提高加載速度

5. 優(yōu)化方向:裁剪shader變體

地址:https://answer.uwa4d.com/question/5da86670e84db43d6efbda72
?

Reserved Memory

RenderTexture

適當(dāng)關(guān)閉抗鋸齒,或者降低抗鋸齒的質(zhì)量、減少陰影貼圖的質(zhì)量,即分辨率、降低RT的存儲(chǔ)位數(shù)(代碼生成的時(shí)候設(shè)置),HDR如果不使用alpha通道的情況,可以修改格式為R11G11B10,即32為存儲(chǔ)格式

動(dòng)畫資源

1. 勾選Resample Code,在模型導(dǎo)入的animation欄中,默認(rèn)開啟,它會(huì)減少關(guān)鍵幀的數(shù)量

2. 壓縮animation

3. 骨骼動(dòng)畫,不用scale,剔除不用的scale曲線,通過編輯器代碼,AnimationUtility

4. 降低動(dòng)畫存儲(chǔ)的float精度,從而使其存儲(chǔ)方式為constant,減少內(nèi)存

5. 選中animation,可以在屬性面板看到其詳細(xì)信息

音頻資源?

1. ForceToMono:把雙聲道音頻合并成單聲道

2. LoadType:?

Decompress On Load:加載后,解壓縮,以未壓縮的方式存儲(chǔ)在內(nèi)存上

Compress in memory:以壓縮方式存儲(chǔ)在內(nèi)存上,播放時(shí)解壓縮

Stream:邊解壓縮邊播放,但是每播放一次都會(huì)增加一份緩存

對(duì)于不經(jīng)常播放的,長而大的背景音樂,用stream,對(duì)于短且頻繁用第一種(搶聲)、其它中等音樂用第二種

3.壓縮格式

壓縮率越小,壓縮后占用的文件內(nèi)存越小,ADPCM壓縮格式,占用內(nèi)存最小,配合Compress in memory使用
PCM:不壓縮、Mp3:次之、Vorbis:更次之、ADPCM:最小

字體資源

1. 字體瘦身:有些字體不使用,可以裁剪掉,工具推薦:FontSubsetGUI、FontPruner

2. 字體壓縮:TMP 生成的字體問題太大,不能改變,通過提取其紋理,然后壓縮,再賦值的方式,壓縮紋理

粒子系統(tǒng)資源

1. 粒子占用的內(nèi)存和實(shí)際播放的粒子數(shù)有關(guān),和最大粒子數(shù)無關(guān)

2. 如果粒子沒播放,也會(huì)占用一部分內(nèi)存,比如:粒子系統(tǒng)只是被關(guān)閉了,沒刪除

Mono堆內(nèi)存

1. 常駐內(nèi)存過高:比如list、dictionary、數(shù)組,初始化時(shí)的內(nèi)存不要過高

2. 持續(xù)分配內(nèi)存:每一萬幀,分配不超過50M,通過在初始化時(shí)緩存變量






?


?文章來源地址http://www.zghlxwxcb.cn/news/detail-615177.html

到了這里,關(guān)于Unity 性能優(yōu)化二:內(nèi)存問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Unity3D賽車游戲優(yōu)化篇】【十】汽車粒子特效和引擎咆哮打造極速漂移

    【Unity3D賽車游戲優(yōu)化篇】【十】汽車粒子特效和引擎咆哮打造極速漂移

    ?????個(gè)人主頁 :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 :Unity游戲demo – ??????版本: Unity2021 ??????適合人群:Unity初學(xué)者進(jìn)階 ??????學(xué)習(xí)目標(biāo):3D賽車游戲的基礎(chǔ)制作 ??????技能

    2024年02月09日
    瀏覽(44)
  • Unity項(xiàng)目轉(zhuǎn)微信小游戲 微信小程序保姆教程,繁雜問題解決,及微信小游戲平臺(tái)簡單性能測試

    Unity項(xiàng)目轉(zhuǎn)微信小游戲 微信小程序保姆教程,繁雜問題解決,及微信小游戲平臺(tái)簡單性能測試

    借著某人需求,做了一波簡單的技術(shù)調(diào)研:將Unity項(xiàng)目轉(zhuǎn)換為微信小游戲。 本文主要內(nèi)容:Unity轉(zhuǎn)換小游戲的步驟,遇到問題的解決方法,以及簡單的性能測試對(duì)比 微信小游戲的限制 微信小游戲?qū)Τ绦虬w大小有嚴(yán)格限制:首包必須小于2M,首包加分包(后加載)不得大于

    2024年02月05日
    瀏覽(107)
  • Android性能優(yōu)化之游戲引擎初始化ANR

    Android性能優(yōu)化之游戲引擎初始化ANR

    近期,著手對(duì)bugly上的anr 處理,記錄下優(yōu)化的方向。 借用網(wǎng)上的一張圖: 這里的anr 問題是屬于主線程的call 耗時(shí)操作。需要使用trace 來獲取發(fā)生anr前一些列的耗時(shí)方法調(diào)用時(shí)間,再次梳理業(yè)務(wù),才可能解決。 問題1 java 調(diào)用棧: 從調(diào)用棧中發(fā)現(xiàn)onActivityResult()執(zhí)行對(duì)游戲側(cè)的

    2024年02月15日
    瀏覽(25)
  • 十八、Unity游戲引擎入門

    十八、Unity游戲引擎入門

    1、下載 ?? ?首先需要下載Unity Hub,下載網(wǎng)址:https://unity.com/cn。 ?? ?然后在其中下載Unity編輯器并安裝,可選擇最新版本。 ?? ?接著需要選擇適合的開發(fā)環(huán)境,例如Android Studio或Xcode,以便進(jìn)行手機(jī)游戲開發(fā)。在安裝完Unity后,需要根據(jù)項(xiàng)目需求下載對(duì)應(yīng)的模塊和插件,例

    2024年02月16日
    瀏覽(117)
  • Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層)

    Android性能優(yōu)化之修復(fù)游戲中內(nèi)存泄漏(java層)

    游戲在bugly上內(nèi)存OOM越來越嚴(yán)重,因此,近期對(duì)內(nèi)存進(jìn)行優(yōu)化。從java層的內(nèi)存進(jìn)行優(yōu)化開始,通過LeakCannary或者adb shell 獲取到內(nèi)存快照,發(fā)現(xiàn)好幾處內(nèi)存泄漏點(diǎn)。 1.單例類持有Activity : 查看內(nèi)存快照,該閃屏頁面Activity(包含引用對(duì)象)可回收3.8M的內(nèi)存; LeakCannary的內(nèi)存分析也

    2024年02月15日
    瀏覽(33)
  • Cocos 微信小游戲內(nèi)存與性能優(yōu)化指南(iOS端)

    Cocos 微信小游戲內(nèi)存與性能優(yōu)化指南(iOS端)

    前言 由于微信小游戲普通模式是基于 C++ 渲染層與 JS 編譯引擎在原生平臺(tái)模擬 HTMLCanvas 渲染能力的方案,其中 JS 代碼的編譯執(zhí)行效率會(huì)極大影響游戲運(yùn)行的性能。通常 JS 引擎都提供了 JIT 能力用于提高編譯速度,這使得小游戲能夠在 Android 端取得優(yōu)異的性能。但是在 IOS 端由

    2024年02月08日
    瀏覽(26)
  • 使用團(tuán)結(jié)引擎開發(fā)Unity 3D射擊游戲

    使用團(tuán)結(jié)引擎開發(fā)Unity 3D射擊游戲

    ? ? ? ?本案例是初級(jí)案例,意在引導(dǎo)想使用unity的初級(jí)開發(fā)者能較快的入門,體驗(yàn)unity開發(fā)的方便性和簡易性能。 ? ? ? 本次我們將使用團(tuán)結(jié)引擎進(jìn)行開發(fā),幫助想體驗(yàn)團(tuán)結(jié)引擎的入門開發(fā)者進(jìn)行較快的環(huán)境熟悉。 ? ? ?本游戲是一個(gè)俯視角度的射擊游戲。主角始終位于屏幕

    2024年01月19日
    瀏覽(110)
  • C# 性能優(yōu)化和Unity性能優(yōu)化

    C# 性能優(yōu)化是一個(gè)非常廣泛的話題,需要從各個(gè)方面來考慮,包括算法和數(shù)據(jù)結(jié)構(gòu)、編譯器優(yōu)化、代碼優(yōu)化等等。下面是一些常見的 C# 性能優(yōu)化技巧: 選擇正確的數(shù)據(jù)結(jié)構(gòu):C# 提供了各種不同的數(shù)據(jù)結(jié)構(gòu),例如數(shù)組、列表、字典等等。選擇正確的數(shù)據(jù)結(jié)構(gòu)可以大大提高代碼

    2024年02月10日
    瀏覽(21)
  • [Unity]?淺談Unity內(nèi)存優(yōu)化,內(nèi)存碎片?僵尸內(nèi)存?以及什么是GC垃圾回收機(jī)制。

    [Unity]?淺談Unity內(nèi)存優(yōu)化,內(nèi)存碎片?僵尸內(nèi)存?以及什么是GC垃圾回收機(jī)制。

    目錄 ???一、什么是內(nèi)存? 1.物理內(nèi)存?? 2.虛擬內(nèi)存 ???二、Unity的內(nèi)存 1.Unity的內(nèi)存分類 2.游戲運(yùn)行時(shí)內(nèi)存占用情況 3.什么是MONO內(nèi)存? 4.內(nèi)存碎片、僵尸內(nèi)存 ??三、GC 垃圾回收 1.定義 2.一張圖清晰得看一下流程~ 3.GC的作用及步驟 4.GC存在的問題及優(yōu)化策略 ???四、內(nèi)存優(yōu)

    2024年02月03日
    瀏覽(68)
  • Unity、UE、Cocos游戲開發(fā)引擎的區(qū)別

    Unity、Unreal Engine(UE)和Cocos引擎是三個(gè)常用的游戲開發(fā)引擎,它們?cè)诠δ芎吞匦陨嫌幸恍﹨^(qū)別。以下是它們之間的主要區(qū)別: 編程語言:Unity使用C#作為主要的編程語言,開發(fā)者可以使用C#腳本進(jìn)行游戲邏輯編寫。Unreal Engine主要使用C++作為編程語言,但也支持藍(lán)圖系統(tǒng),允許

    2024年02月22日
    瀏覽(99)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包