一、如何使用TexturePacker快速导出Egret能用的纹理
TexturePacker可以很方便的制作位图纹理集。同时TexturePacker支持众多格式。
目前TexturePacker官方还没有支持Egret所支持的纹理集格式,但可以为TexturePacket安装插件来支持Egret纹理集导出。
下载插件
该插件由ping-chen提供。
插件安装
将插件同步到本地后,打开目录将egret-spritesheet文件夹拷贝到{TexturePacker}/bin/exporters目录中。
重启TexturePacker后,可以在Data Format选项中看到egret-spritesheet选项。
二、打款素材-如何用TexturePacker打包素材
怎么在淘宝上打印手帐素材
在淘宝上打印手帐素材的方法:先在淘宝上选择打印手帐素材的店家,把电子文档发给对方(建议转pdf,因为word版本不同兼容性不好等问题,容易出错),然后选择用什么纸打印,填写好收件地址,很快就能印好寄过来。
淘宝是阿里巴巴集团旗下的网购零售平台,由马云于2003年5月在浙江杭州创立,是亚洲最大购物网站。该网站主要功能是为用户提供在线零售购物买卖服务以及包括C2C、团购、分销、拍卖等多种电子商务模式在内的电商平台服务。
如何用TexturePacker打包素材操作简单,用拖拽的方式把素材资源导入
智能分析相同的图片,
并去掉重复的,大大节省资源空间
支持retina:AutoSD对于ISO游戏开发这是个非常实用的功能,
只要简单设置一下,
就可以导出高清版的费高清版两套游戏素材,
大大节约了处理多个分辨率素材的时间。
华为手机怎么打印手账素材华为手机可以通过打开手帐素材软件来进行手帐修改,也可以通过一些软件APP进行软件的调试和修改。
三、texturepacker怎么用
首先要解释一下,为什么要使用TexturePacker?
这是应为我们做的游戏最终要运行在Android手机或者苹果手机上,而Android或者ios系统使用的是OpenGL ES来渲染。所以我们要针对OpenGL ES来进行优化。
内存方面,OpenGL ES纹理要求宽和高都是2的n次幂的倍数。想一想,如果图片的宽为33,而高为65,那么图片加载到内存后的大小为多少?考虑到宽和高都是2的n次幂,所以加载到内存后的大小是64*128。所以我们可以考虑将小的图片拼成到的图片,然后加载。
渲染速度方面,OpenGL ES要求切换的纹理少,所以将图片拼成大图片,这样就减少了纹理的切换。
所以使用TexturePacker是很有必要的。
打开TexturePacker,点击Add Folder,将图片全部加载进来。注意:我们应该事先将要拼凑的图片放到同一个文件夹下。
这样。TexturePacker就自动将我们要拼凑的图片拼成了一个大图,并且大图的宽和高都是2的n次幂的倍数。
下面设置输出格式:
Texture format设置成PNG。然后选择Data file和Texture file的保存位置。点击工具栏上的Publis。这样我们就得到了plist文件和png文件。
下面就是在cocos2d-x中使用这两个文件。
将这两个文件复制到Resources文件夹中。
使用下面的代码加载着两个文件
[cpp]
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("last.plist","last.png");
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("last.plist","last.png");
接着创建一个CCSpriteBatchNode,将要渲染的精灵加载到CCSpriteBatchNode。
[cpp]
CCTexture2D*texture=CCTextureCache::sharedTextureCache()->textureForKey("last.png");
CCSpriteBatchNode*node=CCSpriteBatchNode::batchNodeWithTexture(texture);
addChild(node);
CCTexture2D*texture=CCTextureCache::sharedTextureCache()->textureForKey("last.png");
CCSpriteBatchNode*node=CCSpriteBatchNode::batchNodeWithTexture(texture);
addChild(node);
然后就是创建精灵并且加载精灵了。
[cpp]
CCSprite*s1=CCSprite::createWithSpriteFrameName("bird.png");
s1->setPosition(ccp(35,32.5));
node->addChild(s1);
CCSprite*s2=CCSprite::createWithSpriteFrameName("cat.png");
s2->setPosition(ccp(100,100));
node->addChild(s2);
CCSprite*s1=CCSprite::createWithSpriteFrameName("bird.png");
s1->setPosition(ccp(35,32.5));
node->addChild(s1);
CCSprite*s2=CCSprite::createWithSpriteFrameName("cat.png");
s2->setPosition(ccp(100,100));
node->addChild(s2);
其中“bird.png”是小图片的名字。注意:CCSpriteBatchNode中的Sprite都要用同一个纹理。