Unity - 模拟Sprite Packer合并多个Sprite
现在做一个卡牌Demo,由于没有沟通好,动画师为了做Anima2D动画方便,把角色每个部位拆分成单个Sprite,这样肯定是不行的,不仅加大了容量,运行时效率也不高。但是由于动画已经做好了,再回去手动合并再修改Anima2D非常麻烦,只好让程序实现一个快捷工具,把单个的Sprite合成一张大图集,把与单个Sprite绑定的Anima2D数据迁移到大图集。忙了一天总算弄好了,现在记录一下。
Sprite Packer
把Sprite合并成图集其实是Unity内置的功能——Sprite Packer,Sprite Packer会把相同Packing Tag的Sprite合并成大图集,我们要做的就是模拟Sprite Packer。简单的一个思路是:把要打包的Sprite放到一个文件下;得到所有单独的Sprite;生成单独的Texture;打包;切分Texture。
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace Utility
{
public class AtlasTest
{
[UnityEditor.MenuItem("SpriteAtlas/CreateAtlas")]
public static void CreateAtlas()
{
string spritePath = string.Empty;
spritePath = EditorUtility.OpenFolderPanel("选择文件夹", "", "");
List<Sprite> sprites = new List<Sprite>();
List<Texture2D> newTexs = new List<Texture2D>();
List<string> extensions = new List<string>() {
".png", ".jpg", ".psd" };
// 找出单独的sprite
string[] files = Directory.GetFiles(spritePath, "*.*", SearchOption.AllDirectories)
.Where(s => extensions.Contains(

本文介绍了如何在Unity中模拟Sprite Packer功能,将多个单独的Sprite合并为图集以优化资源使用。作者面临动画已制作完成,不便重新调整的情况,通过编写工具自动将Sprite合成为大图集,并处理Anima2D数据的迁移,确保动画在新图集上的正确运行。文章提供了简单的实现思路和Anima2D数据偏移的伪代码。
1万+

被折叠的 条评论
为什么被折叠?



