読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

CocoStudioを触ってみる(Data Editor編)

Cocos2d-x CocoStudio

こんにちは。今回ブログを担当します長屋です。

今回も前回前々回に引き続きCocoStudioを触ってみようと思います。

☆CocoStudio☆
http://www.cocos2d-x.org/download

動作環境などはUI Editor編を確認してください。

☆今回からCocoStudioが日本語化されています。

さてこのデータエディタですがエクセルやCSVのデータをJSON形式で吐き出すことができます。将来的にはJSON形式からの読み込みやSQLiteからの読み込みもされる予定です。

現状(ver1.2.0.1)では全ての機能が実装されている訳ではなさそうです。

データのインポート

「Data Editor」を開くと直接下記の様な画面が開きます。

image1

今回以下のエクセルファイルを読み込んでみたいと思います。

image3

・ゲームのステータスデータ

image4

[ファイル]から[テンプレートをインポート]→[EXCEL]
または 左上のフォルダマークをクリックしてエクセルファイルをインポートします。

インポートが完了するとデータテーブル内にエクセルファイルが追加されます。

エクセルファイルは複数インポートすることが可能です。

image6

データテーブル内のエクセルファイルをダブルクリックをすると中のデータがパースされます。

image7

エクセルファイルでは各シート毎にデータが分けられます。
インポートしたデータはエディタ内で値を変更可能です。

JSONファイルへのエクスポート

インポートと同じように[ファイル]から[jsonファイルを出力]
または 左上の保存ボタンをクリックします。

すると以下のウインドウが開かれます。

image8

このウインドウ内で

① シート全体 または 現在作業中のシートのみを出力
② JSONファイルの出力形式の設定
③ JSONファイル出力時のファイル名の設定

が可能です。

JSONファイルのデータを取得

cocos2d-x 2.1.3よりSpineツールのサポート追加によりJSONパーサも追加されました。
そのパーサを使用してJSONファイルを読み込んでみます。

#include "cocos2d.h"  
#include "cocos-ext.h"  
  
USING_NS_CC;  
USING_NS_CC_EXT;  
  
//ファイル読み込み  
unsigned long size = 0;  
char * pJsonData = (char*)CCFileUtils::sharedFileUtils()->getFileData("test.json", "r", &size);  
  
//データを入れる配列  
CCArray * pJsonArrays = CCArray::create();  
  
//jsonオブジェクト生成  
Json * pJson = Json_create(pJsonData);  
  
//読み込んだ文字列は削除する  
delete [] pJsonData;  
pJsonData = NULL;  
  
//パース  
int arraySize = Json_getSize(pJson);  
for(int i = 0; i < arraySize;i++){  
    Json * pArrayItem = Json_getItemAt(pJson, i);  
    if(pArrayItem){  
        CCDictionary * pDict = CCDictionary::create();  
        for(Json * pItem = pArrayItem->child; pItem != NULL; pItem = pItem->next){  
            if(pItem->type == Json_Number){  
                pDict->setObject(CCFloat::create(pItem->valuefloat), pItem->name);  
            } else if (pItem->type == Json_String){  
                pDict->setObject(CCString::create(pItem->valuestring), pItem->name);  
            }  
        }  
        pJsonArrays->addObject(pDict);  
    }  
}  
  
//ログ出力  
CCObject * pObj = NULL;  
CCARRAY_FOREACH(pJsonArrays,pObj){  
  
    CCDictElement* pElement = NULL;  
    CCDictionary* pDict = (CCDictionary*)pObj;  
  
    CCDICT_FOREACH(pDict, pElement){  
  
        CCLOG(key = %s,pElement->getStrKey());  
        CCObject * pObject = pElement->getObject();  
  
        if(dynamic_cast<CCFloat*>(pObject)){  
            CCLOG(value = %d,(int)((CCFloat*)pObject)->getValue());  
        }  
        if(dynamic_cast<CCString*>(pObject)){  
            CCLOG(value = %s,((CCString*)pObject)->getCString());  
        }  
    }  
}

実行結果
Cocos2d: key = ID
Cocos2d: value = 1
Cocos2d: key = LV
Cocos2d: value = 1
〜〜〜

無事、中のデータを取得することができました。
このパーサを利用してJsonLoaderなどを作ると楽になると思います。

次回は「Animation Editor」を触ってみたいと思います