普段よく使用しているマクロをまとめてみた
気付いた時に随時追加する予定
バージョン
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)