Unity 2018.3.5f1
这里实现了一个简单的合并贴图的工具,在Unity的Project窗口中,选中一个存放图片的文件夹。右键菜单中可以看到 [Pack Texture], [Pack Texture(All Relayout)] 选项, 即可合并该文件夹下的所有贴图。具体如图所示:
选中一个存放了图片的文件夹:
执行合图操作之后,将会合并贴图并将结果生成在事先在AtlasConfig.cs中配置好的路径中(这里测试配置的是Assets/Res目录)。结果包含两类文件Asset和Atlas,Asset文件保存了Atlas文件中每张贴图在图集中的偏移,缩放和对原始图片的引用。如果选中的目录下既有带Alpha的图片又有不带Alpha的图片,工具会根据是否带Alpha进行归类并且结果输出到不同的目录。如下图:
生成的Asset文件保存的信息如图:
由于这些合并后的贴图是用于Mesh的贴图,并且MeshRenderer会根据这些贴图再图集中的偏移而要改变自己的UV,所以为了避免每次合图之后MeshRenderer的都需要重写UV的操作,这里的合图有两个选项Pack Texture和Pack Texture(All Relayout)。Pack Texture选中执行过程中不会对之前合并好的贴图进行改变,保持其在图集中的位置偏移,而Pack Texture(All Relayout)相当于重新排列每张图片在图集中的位置。所以需要注意这两点:
- Pack Texture: 如果之前合并过贴图,该种模式下会继承上次贴图的合并后在图集中的偏移,不会改动之前已经合过贴图的位置。
- Pack Texture(All Relayout): 全部重新排列合图,这种情况下可能改变之前已经合过贴图的在图集中的偏移。