200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【Sprite Atlas】Unity新图集系统SpriteAtlas超详细使用教程

【Sprite Atlas】Unity新图集系统SpriteAtlas超详细使用教程

时间:2024-03-15 12:08:25

相关推荐

【Sprite Atlas】Unity新图集系统SpriteAtlas超详细使用教程

SpriteAtlas是Unity新出的一个功能,用来取代旧版的Sprite Packer。

图集打包的意义:

减少DrawCall图集将图片打包为2的幂次方的素材大小,可以提升性能减小包体大小

Sprite Packer(旧版本)缺点:

旧版Sprite Packer在性能和易用性上对比Sprite Atlas存在诸多不足,比如无法分别对不同图集修改不同质量、无法获取图集里的图片等等。

Sprite Packer可参照我写的另外一个文章

新版Sprite Atlas如何使用:

1、Edit-Project Setting-Editor/SpritePacker打开设置(设置为Enabled For Builds或者Always Enabled,第二三项是SpritePacker使用的)

2、创建图集

在Project窗口右键,Create->Sprite Atlas或者Asset -> Create -> Sprite Atlas

3、属性面板介绍

4、添加图片到图集

可以将文件夹,纹理或精灵指定给Sprite Atlas。可以将整个文件夹分配给Sprite Atlas资产,该文件夹中的所有纹理(包括子文件夹)都将打包。分配单个纹理时,将包括所有定义的精灵。也可以将单个精灵指定给地图集,并且不会考虑同一Texture中的其他精灵。

要将图片打包进图集,请选择Atlas资产,然后通过点击+号添加到列表或将其从“Project”窗口拖放到列表区域来添加它们。您可以将文件夹,纹理,精灵添加到地图集。

为生成的图集设置所需的设置。更改设置将始终将此地图集标记为已修改,并且将在打包阶段再次打包。

可以通过按检查器中的“Pack Preview”按钮预览打包的图集。这将触发此地图集的打包。一旦打包完成,纹理将出现在预览部分。

在进入“播放模式”之前,将重新打包了所有修改了设置的图集(如果选择了“始终启用”)。

5、高清/低清资源切换

创建新的Sprite Atlas,然后设置Type为变种(Variant)类型,并设置关联的Master Atlas,修改Scale即可改变分辨率。

使用代码访问Sprite Atlas接口

1、创建Sprite Atlas

var spriteAtlas=new SpriteAtlas();AssetDatabase.CreateAsset(spriteAtlas, "Assets/sample.spriteatlas");

2、添加图片到Sprite Atlas图集

var spriteAtlas=new SpriteAtlas();var sprite = AssetDatabase.LoadAssetAtPath<Sprite>(assetPath);List<Object> packables = new List<Object>(spriteAtlas.GetPackables());if (!packables.Contains(sprite)){spriteAtlas.Add(new Object[] {sprite});}

3、改变默认Sprite Atlas图集设置(Max Texture Size、Format、Compression)

var spriteAtlas=new SpriteAtlas();var atlasSetting = spriteAtlas.GetPlatformSettings("DefaultTexturePlatform");atlasSetting.maxTextureSize = 4096;atlasSetting.textureCompression = pressedHQ;atlasSetting.format = TextureImporterFormat.RGBA32;spriteAtlas.SetPlatformSettings(atlasSetting);

4、改变不同平台图集设置

spriteAtlas.GetPlatformSettings支持的参数名有"Standalone", "Web", "iPhone", "Android", "WebGL", "Windows Store Apps", "PS4", "PSM", "XboxOne", "Nintendo 3DS" and "tvOS"

void Test(){var spriteAtlas=new SpriteAtlas();var atlasSetting = spriteAtlas.GetPlatformSettings(GetPlatformName(EditorUserBuildSettings.activeBuildTarget));atlasSetting.maxTextureSize = 4096;atlasSetting.textureCompression = pressedHQ;atlasSetting.format = TextureImporterFormat.RGBA32;spriteAtlas.SetPlatformSettings(atlasSetting);}string GetPlatformName(BuildTarget target){string platformName = "";switch (target){case BuildTarget.Android:platformName = "Android";break;case BuildTarget.iOS:platformName = "iPhone";break;case BuildTarget.PS4:platformName = "PS4";break;case BuildTarget.XboxOne:platformName = "XboxOne";break;case BuildTarget.NoTarget:platformName = "DefaultTexturePlatform";break;default:platformName = "Standalone";break;}return platformName;}

5、更多API可参考官网API

注意事项:

UGUI打包SpriteAtlas不能勾选Tight Packing,否则图片会串,原因是Unity UI始终为每个子画面使用一个四边形...因此,它只能使用方形,非旋转的子画面。

而Sprite Renderer可以勾选Tight Packing并且没问题,是因为Sprite Renderer会基于精灵的非透明部分生成网格,并带有大量三角形(不一定是一件好事),但可以让您使用旋转和/或紧密堆积的精灵。Spine的图集png请不要打到SpriteAtlas,因为内存会变两份,因为Spine是直接读取图集png的,不会自动关联到SpriteAtlas里的图片。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。