cocos2d-x 3.0のspineのatlasファイルフォーマット変更対応1 | GCREST_engineerのブログ

GCREST_engineerのブログ

ブログの説明を入力します。

最新のspineではatlasファイルのフォーマットが変更されたらしく、そのままでは動かなくなっていたので、とりあえず簡単に動くように以下のように修正しました。
cocos2d-x 3.0での対応ですが、他のバージョンでも同じだと思います。

atlasファイルの変更点
旧フォーマットでは、画像ファイル名の次の行に画像フォーマットが入っているのですが、新フォーマットでは、その間に画像サイズらしきものが入ってます。
今回は、サイズがあれば読み込み、無ければ無視するようにしています。

対応内容
変更したファイルは、cocos2d/cocos/editor-support/spine/Atlas.cppです。

std::stringを使用しているので、以下のstringをインクルードする。


#include <string>


formatを読み込む前にsizeを取得するようにしたのですが、古いフォーマットでも読み込めるようにsizeが無くても動くようにしています。
Atlas.cppの210行目あたりの修正です。



//このifで括っている部分を追加しました。
if (!std::string(str.end).compare(1, 4, "size")) {
if (readTuple(end, tuple) != 2) return abortAtlas(self);
page->width = toInt(tuple);
page->height = toInt(tuple + 1);
}

//以下の行がformatを読み込んでいる部分
if (!readValue(end, &str)) return abortAtlas(self);
page->format = (spAtlasFormat)indexOf(formatNames, 7, &str);


一応、今回の修正ではサイズを読み込んでいますが、この後の処理で画像ファイルからサイズを取得しているので、ここで取る意味はあまりないです。

もう少し、atlasファイルのフォーマットを調べて、本格対応をする必要がありそうです。