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 的还是要的, 原有的资源加载方式都不变.
- 只是新增了将 xxx.spriteatlas 打成 ab. 然后运行时回调 atlasRequested 加载这个 ab 回传给 引擎 即可.
资源对比
新打包方式
图集 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图集相关推荐
- Unity UGUI图集专题
一:图集介绍 什么是图集:我们可以将其理解为将一系列小图合并为一张大图.使用图集可以减少drawcall,提升效率. 游戏中的图片模型最终是要给到显卡去渲染的,然后CPU通知GPU要开始渲染,这一 ...
- Unity 打包图集
Unity打包图集 public class MyTexturePak {private const string intPutPath = "/Emoji/Input/";pri ...
- Unity一键图集生成工具,附源码 (基于NGUI和TexturePacker)
https://blog.uwa4d.com/archives/NGUI_SplitChannels.html Unity一键图集生成工具,附源码 (基于NGUI和TexturePacker) 作者: ...
- 【Sprite Atlas】Unity新图集系统SpriteAtlas超详细使用教程
SpriteAtlas是Unity新出的一个功能,用来取代旧版的Sprite Packer. 图集打包的意义: 减少DrawCall 图集将图片打包为2的幂次方的素材大小,可以提升性能 减小包体大小 ...
- Unity 解决SpriteAtlas图集打包AssetBundle白图问题
之前文档上说勾选了Include in build之后,就不需要自己增加一个Binding脚本,但是仍然会弹出警告,并且会出现白图现象 Tight Packing 勾选之后当Sprite有透明通道可能 ...
- Unity SpriteAtlas实战使用
前言 图集计划使用sprite atlas,但是看了网上资料用于实战的有点少.自己总结下.Unity 版本2019.4.9f1 图集设置-Sprite Packer Mode Disabled:就是不 ...
- 2022-04-24 Unity UGUI5——图集
文章目录 一.Drawcall 二.图集 一.Drawcall 字面理解 DrawCall,就是绘制呼叫的意思,表示 CPU(中央处理器)通知 GPU(图形处理器-显卡) (一)DrawCall ...
- Unity shader图集Atlas下的UV坐标归一化转换
unity中如果图片打入了图集中,在shader中取到的uv坐标默认是图集中的坐标,如果需要shader做一些类似流光的效果,需要转换成常用的0-1区间的归一化uv坐标,转换方法如下: 步骤一: C# ...
- Unity替换 图集
替换图集 两个图集中有大量同名资源要替换 两个图集中有大量同名资源要替换 using System.Collections; using System.Collections.Generic; usi ...
- Unity UGUI图集打包与动态使用(TexturePacker)
TexturePacker 在用UGUI时,我们需要将一个个小图打包成图集,然后将图集一次性加载以内存换取图片读取效率,即减小Drawcall. UGUI打包并使用图集有两种方法:一种是使用系统自带的 ...
最新文章
- Kruskal算法构造最小生成树
- IBM用量子计算机成功模拟分子,登上《自然》封面
- VisualSvn+TortoiseSVN的安装说明
- 使用nomad部署mysql
- android 弹窗圆角,Android 自定义底部圆角弹窗的实现
- Institute for Manufacturing virtual check in part 1
- ios下获取所有实体/虚拟网卡的信息,并以此判断设备所处的网络状态
- _欧冠F组第1轮,拉齐奥3-1大胜多特蒙德
- 企业绩效管理系统之平衡记分卡
- Shell数组以及排序算法
- python发送excel文件_Python操作Excel, 开发和调用接口,发送邮件
- c语言选择题题及答案,C语言选择题练习及答案.doc
- 固态硬盘是什么接口_机械硬盘和固态硬盘有什么区别?哪种硬盘好?
- C语言求最小公倍数和最大公约数三种算法(经典)----ACM
- 为了探究妹纸对内衣的喜好,我爬了淘宝内衣店的数据!
- 激光雷达与相机融合(五)-------ros实时版点云投影到图像平面
- 2022普通人做抖音的红利在哪里
- Python3一篇学会“图像处理”的基本操作
- 告诉你四川火锅的秘密配方
- python import turtle as t_Python turtle库的学习笔记
热门文章
- iOS应用图标AppIcon
- unity画线之模拟小球抛物线运动轨迹
- 宝塔linux面板负载状态过高,宝塔Linux面板负载状态CPU100%怎么解决
- 万字长文读懂SaaS的中国版图、问题及趋势
- esp8266启动报错 ets Jan 8 2013,rst cause:2, boot mode:(7,7)
- 斗破苍穹java_安卓斗破苍穹游戏源码
- IT工科女硕士-求职总结帖
- 【时间序列】时间序列基本概念总结
- Excel中VLOOKUP跨文件查找
- Struts2的OGNL表达式语言