如何正确的使用Unity的Sprite Atlas

做了几个关于spriteatlas的实验,收获不少. 过程懒得写了.就把最后关键的两点列一下吧.

显存

当img被放入纹理集以后,无论原img是否在Resources目录.显存中均使用的是纹理集而非原始图片.

比如游戏中有10个物品,背包展示时候 你通过Resource.Load<Sprite>($imgPath)加载对应的图片进行展示. 但是该图片已经被打入纹理集了. 则此时显存中加载的是纹理集而非单张图片素材

如图,裸包19个纹理 打成纹理集后 无论如何折腾都是20个纹理.

APK包体

原始图片如果放入Resources目录则会被全量打入APK(即使根本用不到☹️). 但是如果放在外部,只有纹理集放入Resources目录则原素材只会打入很小一部分信息.

恩 这个是比较尴尬的地方了.

如果所有图片都是被间接引用的. 比如一个Prefab里面有一个节点挂了一个SpreiteRender然后引用了Pic1.jpg.

这时候只要把Img和纹理集都丢到Resource目录外面即可. 打出包来 结构也会和方案2一样的.

但是 如果项目中存在 需要用路径去进行Resource.Lord<Sprite>($imgPath)来访问资源时候. 原始资源如果不在Resource目录就根本访问不到.

此时需要首先Load到纹理集,然后通过GetSprites方法访问到相应纹理. 也就是自己需要维护一份纹理集和图片的从属关系.然后封装一下Load函数才行.

猜你喜欢

转载自www.cnblogs.com/eran/p/9420765.html