Unity2d引入新功能SpriteAtlas,Sprite新的图集方式

孙广东  2017.8.3

http://blog.****.NET/u010019717



在Unity 2017.1.0f3中引入了 SpriteAtlas
官方文档: 

之前针对UGUI打包图集,  有 : SpritePacker 
现在的SpriteAtlas要比 SpritePacker容易理解。


在使用 之前,之后看 SetPass的  变化!!!!!
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式Unity2d引入新功能SpriteAtlas,Sprite新的图集方式

创建 SpriteAtlas
首先,创建一个 SpriteAtlas 文件(Asset -> Create -> Sprite Atlas)。
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式
可以指定图集中包含的内容,您还可以查看按的包预览包结果。
比如文件夹 , 文件都可以。而且是Sprite Sheet也是可以的,但是内容会在新的Atlas中重新排序。
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式
要想让贴图进入图集中, 必须是 Sprite才行。 
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式
还有要开启这个功能: 这两个只能开启一个么?   说明这是新旧两种方式了, 只能选择一种
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式


SpriteAtlas 设置
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式
类型
Master 基本上没有问题。
另一种类型,是 Variant 类型。 感觉是复用之前的
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式
现在让我们实际使用生成的 SpriteAtlas 
使用  Resources.Load   加载图集: 
// 需要新 的命名空间 using UnityEngine.U2D;
SpriteAtlas weaponAtlas = Resources.Load<SpriteAtlas>("WeaponAtlas");
        然后得到指定的Sprite:  参数是 名称
Sprite sprite = weaponAtlas.GetSprite("axe2");

当然了也是可以 在脚本中直接引用:
[SerializeField]private SpriteAtlas _weaponAtlas = null;
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式
可以得到图集中的所有Sprite:  
//WeaponAtlas中精灵个数
int spriteCount = _weaponAtlas.spriteCount;
//sprite 
Sprite[] spriteArray = new Sprite[spriteCount];
//spriteArray得到数组
_weaponAtlas.GetSprites(spriteArray);

或者: 
Unity2d引入新功能SpriteAtlas,Sprite新的图集方式