<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      可以仕則仕,可以止則止,可以久則久,可以速則速。

      Deer_GF之SpriteAtlas與AssetBundle應(yīng)用

      Deer_GF之SpriteAtlas與AssetBundle應(yīng)用

      最近做出包性能優(yōu)化,發(fā)現(xiàn)框架出包后UI上引用的圖片精靈丟失。于是就想對(duì)這個(gè)Unity UGUI SpriteAtlas一探究竟。
      接下來我們開始吧。

      目錄

      一、SpriteAtlas 介紹以及使用

             在Unity中,SpriteAtlas是一種將多個(gè)Sprite資源集合在一起創(chuàng)建優(yōu)化的貼圖集合的工具。這個(gè)貼圖集合可以被游戲引擎用于渲染多個(gè)Sprites,從而減少繪制調(diào)用的數(shù)量和總體性能開銷。

             要在Unity中創(chuàng)建一個(gè)新的SpriteAtlas,您可以右鍵單擊項(xiàng)目窗口,然后從上下文菜單中選擇“Create > Sprite Atlas”。然后,您可以將Sprite資源拖放到SpriteAtlas編輯器窗口中,以將它們添加到Atlas中。

             創(chuàng)建好SpriteAtlas后,您可以在游戲代碼中引用它來加載和渲染Sprites。您可以使用Unity提供的SpriteAtlas API來做這些事情,其中包括像GetSprite()這樣的函數(shù)來從Atlas檢索特定的Sprite,以及GetSprites()函數(shù)來從Atlas檢索所有Sprites。

      二、SpriteAtlas 優(yōu)點(diǎn)

             Unity中使用SpriteAtlas有以下好處:

             1. 減少繪制調(diào)用次數(shù):SpriteAtlas將多個(gè)Sprite合并成一個(gè)貼圖集合,這樣在渲染時(shí)只需要一次繪制調(diào)用即可,從而大大減少了繪制調(diào)用的數(shù)量。

             2. 優(yōu)化GPU資源:由于SpriteAtlas將多個(gè)Sprite合并成一個(gè)貼圖集合,可以減少GPU對(duì)不同材質(zhì)和紋理的切換和緩存開銷,從而提高游戲性能。

             3. 簡(jiǎn)化Sprite加載流程:使用SpriteAtlas API可以方便地從貼圖集合中加載Sprites,而無需為每個(gè)Sprite單獨(dú)加載材質(zhì)等資源。

             4. 節(jié)省內(nèi)存:由于SpriteAtlas是一個(gè)貼圖集合,它占用的內(nèi)存比單獨(dú)的Sprite要小得多。這對(duì)于需要處理大量Sprite的游戲場(chǎng)景非常重要。

             5. 提高游戲性能:由于SpriteAtlas可以減少繪制調(diào)用次數(shù)、優(yōu)化GPU資源、簡(jiǎn)化Sprite加載流程和節(jié)省內(nèi)存,因此可以提高游戲性能,使游戲更順暢。

             總之,使用SpriteAtlas可以有效地提高游戲性能,特別是在處理大量Sprite的游戲場(chǎng)景中。

      三、SpriteAtlas 構(gòu)建assetbundle

             1、在使用圖集情況下需要先在Edit > Project Settings > Editor下Sprite Packer Mode選【Sprite AtlasV1 - Enabled For Builds】 或者 【Sprite AtlasV1 - Enabled For Builds】

      image
             2、把圖集里的精靈圖元打到assetbundle里。
             3、生成的圖集不能打到assetbundle,不能打到assetbundle,不能打到assetbundle!筆者因?yàn)橐婚_始對(duì)Unity Ugui圖集概念了解不清楚,造成了assetbundle出包資源圖片不顯示問題!

      注意: UGUI的圖集,無論新舊,在構(gòu)建AssetBundle的時(shí)候,同一個(gè)圖集內(nèi)的所有圖元都要放在同一個(gè)AssetBundle中,否則,如果同一個(gè)圖集的圖元被分散到多個(gè)AssetBundle中,那么每一個(gè)AssetBundle都會(huì)包含一份這個(gè)圖集的Copy,最終的結(jié)果就是包體冗余、內(nèi)存膨脹和加載耗時(shí)等問題。

             4、筆者因?yàn)橐婚_始對(duì)Unity Ugui圖集概念了解不清楚,造成了assetbundle出包資源圖片不顯示問題!所以做了以下第四部分測(cè)試對(duì)比。敬請(qǐng)往下看??????

      四、SpriteAtlas 錯(cuò)誤構(gòu)建assetbundle造成的問題匯總以及對(duì)比

             1、內(nèi)存對(duì)比

             如下圖1,圖2:
             圖1只把圖集構(gòu)建出ab資源,資源內(nèi)存占用138.41MB
             圖2只把圖集中的精靈小圖構(gòu)建出ab資源,資源內(nèi)存占用134.58MB
             當(dāng)然這樣圖1情況下開啟【Sprite Packer Modes】出包后圖片顯示是不正常的,選擇【Disabled】后顯示是正常的。原因是【Disabled】后每個(gè)預(yù)制體ab資源都單獨(dú)依賴出去一份精靈圖。所以內(nèi)存是增加的!

      image

      圖1

      image

      圖2

             2、DrawCalls 對(duì)比

             如下圖1,圖2:
             圖1只把圖集中的精靈小圖構(gòu)建出ab資源,刪除圖集,DrawCall到18
             圖2只把圖集中的精靈小圖構(gòu)建出ab資源,使用圖集,DrawCall到14
             所以,正確使用圖集,可以減少DrawCall

      image

      圖1

      image

      圖2

             3、在使用圖集的情況下,只構(gòu)建精靈小圖,Unity 自動(dòng)最圖集做的處理如下圖1,圖2,圖3,Unity自動(dòng)以文件夾中最后一張圖索引生成一張圖集(前提是一個(gè)文件夾一張圖集測(cè)試)

      (圖4,圖5)(圖6,圖7)同此。

      image

      圖1

      image

      圖2

      image

      圖3

      image

      圖4

      image

      圖5

      image

      圖6

      image

      圖7

             4、在使用圖集的情況下,精靈圖和圖集一起構(gòu)建成assetbundle資源,就沒有3中Unity自動(dòng)生成的圖集,但是這樣同時(shí)出包的資源在構(gòu)建出來的應(yīng)用中使用也是無法正常顯示圖片。如下圖:

      image

      圖1

             5、ab資源只有精靈圖,刪除圖集和打包成圖集后生成ab后對(duì)精靈圖manifest文件做對(duì)比如下:精靈圖打包成圖集后多了兩個(gè)變量,筆者猜想這兩變量是索引圖集用的。

      image

      圖1

      寫在最后

             一定要正確應(yīng)用UGUI圖集,對(duì)項(xiàng)目性能優(yōu)化很大。稍有不對(duì),就會(huì)造成資源冗余,DrawCall增加,內(nèi)存增大等問題。

             在使用中正常大膽的用精靈圖,構(gòu)建assetbundle資源,也只需要構(gòu)建精靈圖。生成的圖集不用管,構(gòu)建資源時(shí)候Unity自動(dòng)會(huì)生成圖集。

             UGUI的圖集,無論新舊,在構(gòu)建AssetBundle的時(shí)候,同一個(gè)圖集內(nèi)的所有精靈圖都要放在同一個(gè)AssetBundle中,否則,如果同一個(gè)圖集的圖元被分散到多個(gè)AssetBundle中,那么每一個(gè)AssetBundle都會(huì)包含一份這個(gè)圖集的Copy,最終的結(jié)果就是包體冗余、內(nèi)存膨脹和加載耗時(shí)等問題。

      參考博客

      馬三小伙兒【Unity游戲開發(fā)】SpriteAtlas與AssetBundle最佳食用方案

      posted @ 2023-03-27 17:49  AlanDu  閱讀(1044)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 日韩精品亚洲aⅴ在线影院| 国产太嫩了在线观看| 国产亚洲精品久久久久久久久 | 亚洲精品日韩精品久久| 国产麻豆剧传媒精品国产av| 亚洲高清国产成人精品久久| av色国产色拍| 广东省| 国产伦一区二区三区视频| 欧美一本大道香蕉综合视频| 色琪琪丁香婷婷综合久久| 国产一区二区三区亚洲精品| 亚洲熟妇自偷自拍另欧美| 综合激情丁香久久狠狠| 日韩精品一区二区三免费| 久久久这里只有精品10| 一区二区亚洲人妻精品| 无码专区 人妻系列 在线 | 奇米网777狠狠狠俺| 久久精品国产亚洲av麻豆软件| 乱码中文字幕| 国产av黄色一区二区三区| 国产精品一二三中文字幕| 深夜视频国产在线观看| 亚洲综合av男人的天堂| 免费国产一级特黄aa大片在线| 香蕉EEWW99国产精选免费| 精品国产91久久粉嫩懂色| 久久久精品2019中文字幕之3| 中文字幕av一区二区三区| 在线天堂最新版资源| 国产成人精品永久免费视频| 极品粉嫩小泬无遮挡20p| 鲁丝片一区二区三区免费| 眉山市| 国产一区二区不卡在线| 色AV专区无码影音先锋| jizzjizz少妇亚洲水多| 亚洲日本va午夜中文字幕久久| 国内精品自国内精品自久久| 男人扒女人添高潮视频|