2014年7月10日木曜日

TexturePackerとSpriteHelper


cocos2dxにおいて画像を表示する際は
そのまま読み込むよりもPlist化された
テクスチャアトラスを読み込む方がメモリ的にもお優しい。
じゃあ何のソフトでPlistを作るのが良いんだい…?


テクスチャアトラスを作る!となった場合
パッと出てくるメジャーなソフトは
TexturePackerかSpriteHelperでしょう。

世間一般ではTexturePackerの方がポピュラーなようですね。
お値段はおよそ4200円。
1週間のお試し版を使用した感じ、とても使いやすい
良ツールですが…1年間のライセンスが4000円以上、
というのは駆け出しの個人開発者にはちょっと高い気がする。

そんなわけで自分はSpriteHelperの方を購入してみた。
お値段1700円。TexturePackerの半分以下。

ネットとかで調べる限りでは
テクスチャアトラスを効率的に作る、という点に関しては
やはりTexturePackerに軍配があがるようですが、
そこはお値段との相談かなと。

SpriteHelperの独自機能としてアプリ上から
物理演算やアニメーションを設定できる、というのも大きな違いです。
何よりSpriteHelperはLevelHelperという別ソフトと連動させる事で
更に使い勝手の良いツールになる予感がしてます。
LevelHelperは購入していませんが。

SpriteHelperとLevelHelperの値段を合計しても
TexturePackerと同じ程度なのでお値段重視で
色々と手広くやりたい場合は
断然こちらが良いのではないかな、と。
(TexturePackerにもPhysicsEditorと抱き合わせ版があるみたい)

TexturePackerは開発ブログなどで使い方やポイントなどを説明すれば、
一年間のフリーライセンスがもらえる(らしい)、
という大きなメリットがあるので、それを利用するのも手。
というか、だからネットで調べるとTexturePackerの情報がわんさかあるんですね。

そんな話はさておき、SpriteHelperの使用について
ちょっとメモしておこうかと。

SpriteHelperはメインの作成画面から
Publishか、もしくは保存を行うと、生データ(拡張子:pshs)と共に
テクスチャシートが生成される。



このPublishか保存をするだけだと、Plistは生成されず。
Plistは単体でこっちから書き出す。


これにてPlistとテクスチャアトラスのシートがそろう、と。

ちょっと悩んだのがcocos2dxサイドでの読み込み。
基本的にはただのPlistなわけなので、
通常通りのコードで問題なくコンパイルできるはず…
…なのにエミュレーター上でクラッシュ。

これはアレだ。コンパイルできているという事はコードではなく、
実行時にデータが見つからないとかそういう感じのエラーやで。

というわけでPlistのコード(Xml)を確認してみた。
原因はここにあった。画像の指定に使われる名称に
拡張子が含まれていないっぽい。

要するにTexturePackerなどで作ったテクスチャアトラスから
コード上で一部の画像を表示させる時は
"hogehoge.png"みたいな感じで拡張子まで入れるけど、
SpriteHelperの場合、Plist定義が単純に
拡張子を含まないファイル名で指定されているので
"hogehoge"だけで良いということですな。

TexturePackerから作ったPlistで画像を表示させる場合
Sprite* test = Sprite::createWithSpriteFrameName("test_01.png");
SpriteHelperから作ったPlistで画像を表示させる場合
Sprite* test = Sprite::createWithSpriteFrameName("test_01");

ちゃんと説明書に書いておいてくれよぅ…
(書いてあるかもしれない。自分が英語読めないだけで。)



☆★というわけでcocos2d-xで制作しました★☆

レッド・ザ・パニッシャー ―スタイリッシュレトロアクション―
カテゴリ: アクション
Google Playで詳細を見る

今なら(永久に)無料! 今すぐチェック!!

0 件のコメント:

コメントを投稿