C++
cocos2d-x

cocos2d-xマクロまとめ

More than 1 year has passed since last update.

普段よく使用しているマクロをまとめてみた
気付いた時に随時追加する予定

バージョン
cocos2d-x 3.14.1

判別系

デバッグチェック

#if COCOS2D_DEBUG

プラットフォーム

Android

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

iOS

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

Mac

#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC)

以下略

展開系

createメソッド作成

cocosのお作法的にstaticなクリエイトメソッドを作る

例えば
CREATE_FUNC(UnitCard)
みたいにすると

static UnitCard* create()
{
    UnitCard *pRet = new(std::nothrow) UnitCard();
    if (pRet && pRet->init())
    {
        pRet->autorelease();
        return pRet;
    }
    else
    {
        delete pRet;
        pRet = nullptr;
        return nullptr;
    }
}

みたいに展開される

メモリ解放

安全にメモリ解放を行う
とはいえ、nullチェックをする程度なので、完全に安全というわけではない

CC_SAFE_RELEASE_NULL(ptr)

シンセサイザ

rubyのアクセサみたいなやつ
メンバ変数とゲッターとセッターをまとめて用意してくれる感じ

例えば
CC_SYNTHESIZE(std::string, _name, Name)
みたいにすると

protected:
    std::string _name;

public:
    std::string getName();
    void setName();

みたいに展開される

  • 通常型

CC_SYNTHESIZE

  • 通常型(展開時にconst $type&がつけられる)

CC_SYNTHESIZE_PASS_BY_REF

  • セッターを作らない

CC_SYNTHESIZE_READONLY

  • セッターを作らない(展開時にconst $type&がつけられる)

CC_SYNTHESIZE_READONLY_PASS_BY_REF

  • セット時に既に値が入っていた場合、releaseする

CC_SYNTHESIZE_RETAIN

システム系

ログ出力

CCLOG(format, ...)

警告

CCASSERT(condition)