texturepacker怎么用

texturepacker怎么用,第1张

首先要解释一下,为什么要使用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都要用同山型一个纹理。

怎么样分割由TexturePacker生成的SpriteSheets图和plist文件

修改现存单元文件

要更改由软件包提供的单元文件,先创建名为 /etc/systemd/system/<单元名>.d/ 的目录(如/etc/systemd/system/httpd.service.d/),然后放入 *.conf 文件,其中可以添加或重置参数。这里设置的参数优先级高于原来的单元文件。

例如,如果想添加一个额外的依赖,创建这么一个文件即可:

/etc/systemd/system/逗厅仿<unit>.d/customdependency.conf[Unit]Requires=<新伏咐依赖>After=<新依赖>

然后运行以下命令使更改生效:

systemctl daemon-reload# systemctl restart <单元>

此外,把旧的单元文件从 /usr/lib/systemd/system/ 复制到 /etc/systemd/system/,然后进行修改,也可以达到同样效果。

systemctl enable <单元>

在 /etc/systemd/system/ 目录中的单元文件的优先级总是高于 /usr/lib/systemd/system/ 目录中的同名单元文件。注意,当 /usr/lib/ 中的单山纤元文件因软件包升级变更时,/etc/ 中自定义的单元文件不会同步更新。此外,你还得执行 systemctl reenable <unit>,手动重新启用该单元。因此,建议使用前面一种利用 *.conf 的方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8176953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存