所有被引擎识别的资源都可以被运行时创建.图像资源(ImageAsset)和其他资源一样,继承于AssetBase.也就是说AssetBase的所有属性它都具备,另外还有一些自身的属性.
图像资源是一张由一个或者多个子图拼接而成的组合图像文件,单一图像的不多说了,只说一下组合的情况,在组合图像配置时,需要给定各个子图和对应区域的关系,资源加载时会成为一组帧序列.索引从0开始.
一个有效的图像资源至少要有一帧.
导出信息
除了继承的属性和方法,下面列举属于自身的:(下面为属性名,都有get/set方法)
ImageFile: // 图像文件名
CellCountX&CellCountY: // 横纵子图数量(用于数组形式排列的子图,大小一样,排列有规则的情况)
CellWidth&CellHeight: // 子图宽高(像素)(用于数组形式排列的子图,大小一样,排列有规则的情况)
CellStrideX&CellStrideY: // 子图间距(像素)(用于数组形式排列的子图,大小一样,排列有规则的情况)
CellOffsetX&CellOffsetY: // 偏移值(像素)(用于数组形式排列的子图,大小一样,排列有规则的情况)
CellRowOrder: // 子图帧序列索引按行序递增
FilterMode: // 采样模式,目前有近点采样和双线性采样两种
Force16Bit: // 强制16位
ExplicitMode: // 开启/关闭不规则子图模式
额外接口
getFrameCount: 获取帧数量
getFrameSize(frameindex): 获取指定帧尺寸
getImageWidth: 获取图像宽
getImageHeight: 获取图像高
getImageSize: 获取图像尺寸
getIsImagePOT: 检查原图是不是二次幂大小尺寸.
不规则子图说明
针对没有数组概念,大小不一的子图组合,下面给予说明:
先看在脚本中如何生成对应的图像配置:
// Create a bare asset. %asset = new ImageAsset(); // Configure the basic asset details. %asset.AssetName = "Stuff"; %asset.ImageFile = "things.png" %asset.ExplicitMode = true; // Configure the explicit cells i.e. frames. %asset.addExplicitCell( 0, 0, 10, 20 ); %asset.addExplicitCell( 10, 0, 30, 15 ); %asset.addExplicitCell( 40, 60, 23, 10 ); // Save it as an asset definition to be used by the asset system. TamlWrite( %asset, "stuff.asset.taml" );
对应的资源文件配置如下:
<ImageAsset AssetName="Stuff" ImageFile="things.png"> <ImageAsset.Cells> <Cell Offset="0 0" Width="10" Height="20"/> <Cell Offset="10 0" Width="30" Height="15"/> <Cell Offset="40 60" Width="23" Height="10"/> </ImageAsset.Cells> />
由于这个MIT版本是今年才发布的,所以在工具方面作者说还在搞,不过应该很快可以发布了,目前对于自动生成图像资源,官方给出了一个解决方法:
在.\tools\TexturePacker\下面给出了一个TexturePacker的导出插件,可以通过TP软件导出T2D可用的图像资源.
(发布版的插件编写有问题,不过可以从当前的开发分支上更新一下 :) )