自动图集配置

打包图集

图集(Atlas)是游戏开发中常见的一种美术资源,通过IDE发布流程将多张图片合并成一张大图,并通过atlas格式的文件存放原始图片资源信息。

图1-1就是采用LayaAirIDE打包好的一张png图集资源。

3-1

(图1-1)

3.1 为什么要使用图集资源

在游戏中使用多张图片合成的图集资源作为美术资源,有以下优势:

1 优化内存

合成图集时会去除每张图片周围的空白区域,加上可以在整体上实施各种优化算法,合成图集后可以大大减少游戏包体和内存占用。

2 减少CPU运算

多个 Sprite 如果渲染的是来自同一张图集的图片时,这些Sprite可以使用同一个渲染批次来处理,大大的减少CPU的运算时间,提高运行效率。

3.2 支持图集打包的格式

LayaAirIDE支持对PNG与JPG两种资源格式打包为图集。但是图集打包的原始资源,推荐使用PNG,因为JPG的体积会较大。

Tips:

需要注意的是,PNG原始资源的位深度不能超过32,否则打包出来的图集会出现花屏。打进图集的资源 Texttrue Type 属性要设置为 SpritetTextrue 。另外,PNG与JPG资源不能是其它格式的资源改名为PNG与JPG格式的。

3.3 用LayaAir IDE制作图集的方式

用LayaAir IDE制作图集有两种方式,第一种方式更为细致,第二种方式更为简单快捷,开发者可以自行选择。

3.3.1 自动生成

自动将图片资源打包只有在LayaAir IDE发布时才可以,但是需要添加和设置图集打包配置文件,这里我们通过一个示例来讲解,如图1-2所示:

3-2

(图1-2)

1,所有的图片资源都放在 assets/resources 目录下,上文提到,由于项目开发中图片可能会使用代码的使用方式,因此在不指定“始终包含的资源目录”的情况下,放在resources目录下会直接发布到输出目录中。

2,resources目录下的atlas目录,用来存放一些散图和子文件夹(里面也有散图),这么做的好处是对资源做好分类管理,往往resources目录下还有其它资源目录,尽量把图片资源和其它资源分开存放。

3,atlas目录下,有两张图片(img_bg100-0.png和img_bg100-1.png)和子文件夹ui1、ui2,里面分别有很多散图,同时ui1目录下还有 a子文件夹。

如果不进行图集打包,那么在发布后,输出目录下的 atlas 目录里都是散图。下面来看看如何打包图集:

第一步:添加配置文件

如动图1-3所示,在atlas目录下添加配置文件。

3-3

(动图1-3)

在resources/atlas目录下,右键->创建,选择“自动图集设置”,则会创建一个AtlasConfig.atlascfg文件。放到atlas下的目的,是可以对atlas目录中的图片和子文件夹下的图片同时进行图集打包(支持单张图集和多个子文件夹图集)。开发者可以对此文件重命名。

第二步:图集设置文件属性

点击 AtlasConfig 文件,如图1-4所示:

3-4

(图1-4)

子文件夹处理

每个子目录创建一个纹理集:每个子文件夹打包一个图集。

共用一个纹理集:所有子文件夹和同级目录中的图片打包成一个大图集。

包含子文件夹

勾选后,支持将子文件夹打包图集,不勾选,只处理同一级目录中的图片打包图集。

图集最大宽\高度

默认值为2048×2048,该值决定单个图集的最大尺寸。如果原始图片过多,超过单个图集最大宽高时,则会在打包时生成新的图集文件(多个图集)。

单图最大宽\高度

默认值为512×512,超过这个尺寸的单图将不会被打包到图集中。

Tips:超过512×512的单图不建议打包到图集中,可以单独预加载此图,但是,加载单图也不能超过1024×1024,否则会对性能有影响。

纹理集缩放

这里可以通过缩放减少图集体积,比如改为0.5,IDE会按原图宽高分别乘0.5生成到图集中,显示的时候会保持会通过拉伸保持原图大小,这样处理后,虽然图集的尺寸会变小,但是显示的效果也会有所影响,可以视为一种图集的另类压缩方案。如果要保持设计时的图片精度,尽量不要调整默认值。

二次幂限制

如果勾选,则生成的图集图片宽高将会是2的整次幂。这里,建议美术在设计的时候,就按2的整次幂来设计,通过图集工具强行保持2的整次幂,肯定会导致图集的体积变大。所以,除非是面临某些强制要求按2的整次幂优化的Runtime环境,常规情况下无需勾选,尽量提要求给美术设计人员,按32、64、128、256等2的整次幂来设计图片的宽高。

剪裁图片周边空白

如果勾选,则生成的图集图片会自动把原始图片中空白区域裁剪掉。默认是是勾选状态,不要去掉。

纹理格式

png32为默认格式,此格式支持透明度和更多的颜色;png24,无透明度;纹理压缩参考文档《纹理压缩》

第三步:发布生成图集

当设置好后,在“构建发布”进行发布,等待发布成功,这时来看看发布后的目录,如图1-5所示:

3-5

(图1-5)

1、生成了3个图集(AtlasConfig,ui1 和 ui2),由于选择了 每个子目录创建一个纹理集 方式,ui1 和 ui2 各自生成一个图集(子文件夹打成的图集文件命名是按照文件夹名字),atlas下的图生成一个图集(AtlasConfig.atlascfg所在文件夹生成的图集文件命名按照AtlasConfig文件名)。

2、如果有尺寸超过了512x512的图,则不打入图集(512×512是图1-4的设置)。

3、ui1目录下存在一个a目录,并且勾选了包含子文件夹,所以在图集ui1中也打入了a文件夹下的散图。如果不勾选包含子文件夹,则ui1/a 目录会保留,下面还是散图。

3.3.2 工具制作

第二种方式更为快捷简单,但无法做到像第一种方式那样进行细致的属性设置,此方法在《动画节点》中也有提到,下面来为大家演示。

首先点击”工具“菜单中的”制作图集“。

3-6

(图1-6)

然后将所需要打包的文件夹拖入图片所在文件夹中,点击制作

3-7

(图1-7)

也可以点击文件夹图标自行选择路径,如图1-8所示。

3-8

(图1-8)

点击制作之后,输入文件名点击保存如图1-9所示。

3-9

(图1-9)

这样图集就制作好了。

当我们对图集中包含的图片有增删时,只需要重复一次上面的流程,点击.atlas文件,点击是,即可成功替换,如图1-10所示。

3-10

(图1-10)

[!Tip]

如果使用第二种图集打包方式,那么开发者要保证,此目录会非常稳定,后续不会进行图片资源的增删修改,如果不能保证稳定的目录,那么最好使用第一种打包方式。

3.4 打包生成的图集文件介绍

3.4.1 打包生成的图集文件

打包图集后,会生成图集专用资源(分别是同名的.atlas文件和.png文件)

3.4.2 atlas后缀文件

.atlas是LayaAirIDE特有的图集格式,仅用于图集,所以在加载.atlas时不需要填写类型,和加载普通的单图方式一样,更加方便,是推荐的图集加载方式。atlas方式加载图集的示例代码为:

//atlas方式图集使用示例
Laya.loader.load("resources/atlas/Atlas_ui.atlas").then( 
    ()=>{} 
);

3.5 如何在项目中使用图集中的小图

在项目中如果用到图集中的资源,则需先预加载图集资源,然后设置图片的皮肤(skin)属性值为“原小图目录名/原小图资源名.png”。

例如:现在我们将图1-5中原来的小图 img_head2.png 和 comp 目录下的 image.png 在项目中通过图集的方式显示出来,示例代码如下:

        let resArr: Array<any> = [

            { url: "resources/atlas/Atlas.atlas", type: Laya.Loader.ATLAS },
            { url: "resources/atlas/Atlas_ui.atlas", type: Laya.Loader.ATLAS },
            { url: "resources/atlas/Atlas_comp.atlas", type: Laya.Loader.ATLAS }];


        Laya.loader.load(resArr).then( ()=>{
                //创建Image1实例
                var img1 = new Laya.Image();
                //设置皮肤(取图集中小图的方式就是 原小图目录名/原小图资源名.png)
                img1.skin = "resources/atlas/img_head2.png";
                //添加到舞台上显示
                Laya.stage.addChild(img1);

                //创建Image2实例
                var img2 = new Laya.Image();
                //设置皮肤(取图集中小图的方式就是 原小图目录名/原小图资源名.png)
                img2.skin = "resources/atlas/comp/image.png";
                //添加到舞台上显示
                Laya.stage.addChild(img2);
            } 
        );

运行效果,如图1-11所示:

3-11

(图1-11)

至此,打包图集就介绍完了,开发者需要提前规划好图片的目录管理,可以根据功能划分,每个功能创建一个子文件夹,这样图集的尺寸能尽量控制在合理范围内,按功能划分的好处也是方便查找。开发者在使用过程中如果遇到问题,欢迎随时和我们交流。

Copyright ©Layabox 2025 all right reserved,powered by LayaAir Engine更新时间: 2025-10-14 18:08:07

results matching ""

    No results matching ""