エンジニア

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

投稿日:2014年2月25日 更新日:

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

今回も前回前々回に引き続き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」を触ってみたいと思います

採用情報

ワンダープラネットでは、一緒に働く仲間を幅広い職種で募集しております。

-エンジニア
-,

© WonderPlanet Inc.