我有一堆共享相同纹理图集的精灵,比如这个
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Atlas.plist"];
CCSprite *sprite1 = [CCSprite spriteWithSpriteFrameName:@"Star1.png"];
CCSprite *sprite2 = [CCSprite spriteWithSpriteFrameName:@"Star2.png"];
[self addChild:sprite1];
[self addChild:sprite2];
和一堆使用相同FNT字体的位图字体标签,如此
CCLabelBMFont *label1 = [CCLabelBMFont labelWithString:@"label1" fntFile:@"font.fnt"];
CCLabelBMFont * label2 = [CCLabelBMFont labelWithString:@"label2” fntFile:@"font.fnt"];
[self addChild: label1];
[self addChild: label2];
所有这些都在同一层
我想知道将font.png
文件(由font.fnt
使用)打包到纹理图集中,比如使用像texture packer这样的工具,会导致cocos2d使用相同的纹理图集来绘制标签和精灵
答案 0 :(得分:0)
所以,我就这样做了:
我使用纹理打包器
将font.png
文件打包到Atlas.pvr
文件中
然后使用Xcode我查找font.png
Atlas.plist
图像的帧起源
然后使用以下bash脚本我将帧原点添加到.fnt
文件中每个字形的坐标原点
#!/bin/bash
infile='testfont.fnt'
framex=258
framey=62
output=''
while ifs=$'\n' read -r line || [[ -n "$line" ]] ; do
if [[ $line =~ ^(.*x\ ?=\ ?)([0-9]*)(.*y\ ?=\ ?)([0-9]*)(.*)$ ]] ; then
output=$output${BASH_REMATCH[1]}$((${BASH_REMATCH[2]}+framex))${BASH_REMATCH[3]}$((${BASH_REMATCH[4]}+framey))${BASH_REMATCH[5]}$'\n'
else
output=$output$line$'\n'
fi
done < "$infile"
echo "$output"
然后在输出.fnt文件中,我将图像文件名从testfont.png
更改为Atlas.pvr