日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity图集打包

發布時間:2023/12/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity图集打包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Unity圖集打包

  • 解析不同的精靈圖集情形

Include in Build:控制是否參與資源打包

1.正常Sprite與圖集依賴(一個sprite只能被一個圖集依賴,不存在公共依賴)

當啟用Include in Build時:

  • 圖集不被打包:圖集和sprite和資源圖片將會跟隨預制體一起打入prefab,如果圖集和sprite和資源圖片被多個prefab依賴,圖集和sprite和資源圖片將會被分成多分分別打到prefab里。因為資源打包依賴關系時資源包間的依賴。要想打一份圖集和sprite,只要把圖集打包就可以了。
  • Prefab包(依賴a8圖集):圖集被打入a81p資源包

    Prefab包(依賴a8圖集):圖集被打入a8p資源包

    上圖圖片資源被分成多分資源打入prefab資源包

    2)圖集被打包:形成資源包間的依賴,圖集和sprite將會被打一份,所有prefab資源包都依賴這份圖集資源包。

    圖集包

    ?

    Prefab包:

    從上面三張圖可以看出Prefab沒有打入圖片資源,只有圖集腳本和sprete腳本被打入

    當禁用Include in Build時:

    1)圖集不被打包:圖集和sprite和資源圖片將不會跟隨預制體一起打入prefab,此時資源加載將不會有圖集。要想正常,必須圖集打包。使用SpriteManager綁定主動加載。

    2)圖集被打包:形成資源包間的依賴,圖集和sprite將會被打一份,所有prefab資源包都依賴這份圖集資源包。

    當禁用Include Build時,圖集不論是打包還是不打包都如上圖。圖集腳本和圖片資源都不會打入包

  • 非正常Sprite與圖集依賴(一個sprite只能被多個圖集依賴,存在公共依賴)
  • 資源關系 ?

    圖集依賴,下圖黃色

    a1a4依賴1.pug,4.png;

    a4a5a6依賴4.png,5.pug,6.png

    預制體依賴,下圖綠色

    a1p依賴a1a4中的1.png

    a4p依賴a1a4和a4a5a6中共有的4.png

    依賴圖

    a1a2a3和a1a4有共同的依賴資源4.png

    當啟用Include in Build時:

  • 圖集不被打包:被依賴的多個圖集和sprite和資源圖片將會全部跟隨預制體一起打入prefab,如果多個圖集和sprite和資源圖片被多個prefab依賴,多個圖集和sprite和資源圖片將會被分成多分分別打到prefab里。且共有的圖片會被復制多分打入包。因為資源打包依賴關系時資源包間的依賴。
  • a1p預制體資源關系如下

    上圖 a1p依賴a1a4圖集自有的圖片1.png,而a1a4 ?和 a4a5a6又有公共依賴的圖片4.png,形成鏈式間接依賴關系。導致a4a5a6和a1a4所有依賴的圖片資源都將會跟隨預制體打入資源包。 同時a4a5a6和a1a4共同依賴4.png。會形成兩份資源。

    a4p預制體資源關系如下

    上圖如果預制體依賴圖集共同依賴的資源4.png,資源包將會選擇其中的一個圖集打入包中

    2)圖集被打包:形成資源包間的依賴,圖集和sprite將會被打一份,所有prefab資源包都依賴這份圖集資源包。

    圖集包

    預制體資源

    此時預制體資源包只包含a1a4圖集。此時兩個圖集雖然把圖片分別打到圖集包里,但是共同依賴的4.png圖片(上圖紅色框資源)被復制兩份分別打到圖集。這種設置資源冗余。所以,圖集不能有公共依賴資源

    當禁用Include in Build時:

  • 圖集不被打包:
  • 圖集被打包:
  • ?此時預制體資源包只包含a1a4圖集。此時兩個圖集雖然把圖片分別打到圖集包里,但是共同依賴的4.png圖片(上圖紅色框資源)被復制兩份分別打到圖集。這種設置資源冗余。所以,圖集不能有公共依賴資源

    Include in Build?功能是控制依賴此圖集的資源是否跟隨此資源打包。

    如果禁用 ,圖集不會計算到依賴此資源的打包中。開啟后將會計算進去。

    一定要注意的是Include in Build無論是否禁用,當兩個圖集依賴相同的圖片資源時,如果這兩個圖集分別打包,則這份圖片資源將被復制兩份分別打入圖集包里。

    當兩個圖集依賴相同的圖片資源,且被打在同一個包里時,被打進包里的資源時分別打包的總和,如下圖。

    a4a5a6的資源將會被生成兩份。因為當打a1a4時,兩個圖集有公共依賴,兩個圖集的所有圖片被打入包,同時公用資源復制一份,然后再把a4a5a6在重新打進資源包,所以a4a5a6有兩份

    所以圖集一定不要有共用資源。

    總結:

    1.圖集打包時,圖集間一定不要有同一個依賴的圖片,不然產生多分圖片資源。如果被多個預制依賴會產生更多的冗余資源。

    2.圖集一定要打包,已被其他預制共同依賴而不會產生多分資源。

    3.當Include in Build啟用時,如果圖集不被打包,那么打包時會根據依賴此圖集的預制體的多少生成多分圖集。如果圖集打包就只會生成一份圖集資源包。

    4.當Include in Build禁用時,圖集必須打包,圖集資源也是一份。 ?如果圖集不被打包,unity找不到圖集,將無法顯示圖集,還有一種解決辦法就是綁定SpriteAtlasManager,通過Resources.Load()加載圖集(圖集必須在Resources目錄下)。

    Include in Build被禁用時必須使用SpriteAtlasManager.atlasRequested綁定代碼,因為圖集和預制體不會形成依賴關系。或者自己編寫圖集和預制體依賴關系配置

    綁定代碼如下

    using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.U2D;public class assetLoaderTest : MonoBehaviour {public string rootPath = "D:/Assset";// Start is called before the first frame updatevoid Start(){SpriteAtlasManager.atlasRequested += loadAtlas;}void loadAtlas(string name,Action<SpriteAtlas> call){Debug.LogError("=======xx===" + name);AssetBundle atlas = AssetBundle.LoadFromFile(string.Format("{0}/{1}", rootPath, name));//Resources.Load(string.Format("{0}/{1}", rootPath, name));call(atlas.LoadAsset<SpriteAtlas>(name));}}

    總結

    以上是生活随笔為你收集整理的Unity图集打包的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。