unity-SpriteAtlas图集
title: unity-SpriteAtlas圖集
categories: Unity3d
tags: [unity, 圖集]
date: 2022-01-10 14:29:00
comments: false
mathjax: true
toc: true
unity-SpriteAtlas圖集
前篇
- Sprite Atlas - https://docs.unity3d.com/cn/2018.4/Manual/class-SpriteAtlas.html
- 自動創建SpriteAtlas并設置圖集資源 - https://www.jianshu.com/p/bdd223184738
- SpriteAtlas與AssetBundle最佳食用方案 - https://cloud.tencent.com/developer/article/1765934
創建 圖集
創建.
手動創建. 右鍵 -> create -> sprite atlas, 然后拖入需要打圖集的 文件/文件夾
代碼創建
public static SpriteAtlas CreateAtlas(string output, TextureImporterFormat tif) {SpriteAtlas atlas = new SpriteAtlas();// 設置參數 可根據項目具體情況進行設置SpriteAtlasPackingSettings packSetting = new SpriteAtlasPackingSettings() {blockOffset = 1,enableRotation = false,enableTightPacking = false,padding = 2,};atlas.SetPackingSettings(packSetting);SpriteAtlasTextureSettings textureSetting = new SpriteAtlasTextureSettings() {readable = false,generateMipMaps = false,sRGB = true,filterMode = FilterMode.Bilinear,};atlas.SetTextureSettings(textureSetting);AssetDatabase.CreateAsset(atlas, output);return atlas; }大概就是這樣設置
-
網上很說不要勾選 Include In Build, 說勾選了會有冗余的一份散圖打進去, 實際上這個Bug早已經在 Unity2018.4.6 中修復了, 所以我們在使用中放心大膽地勾選 Include In Build 就好了
打成 AssetBundle
將 xxx.spriteatlas 圖集文件打成 ab 后, 引擎需要根據 每個人自定義加載 方式加載 ab 后, 回調回引擎, 不然會出現圖片是 空白 的情況
需要添加 SpriteAtlasManager.atlasRequested, 不添加的會會報錯: spriteatlasmanager.atlasrequested wasn't listened to while xxx requested
添加 atlasRequested
代碼
using UnityEngine; using UnityEngine.U2D;public class AtlasLoader : MonoBehaviour {void OnEnable() {SpriteAtlasManager.atlasRequested += RequestAtlas;}void OnDisable() {SpriteAtlasManager.atlasRequested -= RequestAtlas;}void RequestAtlas(string tag, System.Action<SpriteAtlas> callback) {// 1. 自定義加載 ab 的邏輯. (這里最好不要用異步加載的方式, 否則會閃現一下空白圖片, 因為此時資源還未被加載出來)string path = string.Format("Assets/Res/SpriteAtlas/{0}.spriteatlas", tag);SpriteAtlas sa = (SpriteAtlas) ResourceMgr.Instance.LoadAsset(path, typeof(SpriteAtlas));// 2. 加載完 SpriteAtlas 回傳給引擎 callback(sa);} }打包方式
資源對比
新打包方式
圖集 ab
-
cards.assetbundle.manifest 里面記錄了引用的 圖片文件夾 ab
... Assets: - Assets/Res/SpriteAtlas/cards.spriteatlas Dependencies: - E:/its/tdmj_itc/patch/temp_patch_root/tdmj/common/resource/assets/res/ui/atlas/cards.assetbundle
圖片文件夾 ab
-
cards.assetbundle.manifest 里面記錄了引用的 圖片資源
... Assets: - Assets/Res/UI/Atlas/cards/11.png - Assets/Res/UI/Atlas/cards/15.png Dependencies: [] -
AssetStudio 分析 cards
-
unity profiler 中內存快照
多出來幾個 xxx.spriteatlas 所在 ab
舊打包方式
圖片文件夾 ab
-
cards.assetbundle.manifest 里面記錄了引用的 圖片資源
... Assets: - Assets/Res/UI/Atlas/cards/11.png - Assets/Res/UI/Atlas/cards/15.png Dependencies: [] -
AssetStudio 分析 cards
結論
AssetStudio 可以看出, 新的方式的 圖集是打到 xxx.spriteatlas 所在的 ab 中.
unity profiler 中內存快照看到多出了
使用新的 SpriteAtlas 圖集方式可以隨時預覽某個圖集
總結
以上是生活随笔為你收集整理的unity-SpriteAtlas图集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 出现10048和9017错误提示的处理
- 下一篇: 计算机网络安全基本概述