0

このように、同じテクスチャ アトラスを共有するスプライトがたくさんあります。

[[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ファイル (で使用) をテクスチャ アトラスにパックすると、たとえばtexture packerfont.fntのようなツールを使用すると、cocos2d が同じテクスチャ アトラスを使用してラベルとスプライトの両方を描画するようになるのではないかと思います。

4

1 に答える 1

0

だから、これは私がした方法です:

テクスチャパッカーを使用font.pngしてファイルをファイルにパックしましたAtlas.pvr

font.png次に、Xcodeで指定された画像のフレーム原点を探しましたAtlas.plist

ここに画像の説明を入力

.fnt次に、次のbashスクリプトを使用して、フレームの原点をファイル内の各グリフの座標原点に追加しました

#!/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

于 2014-08-06T04:19:38.807 に答える