はじめに
- ゲームを作っていて、一つのシーンで複数のレイヤーを扱っているとき、ステージごとの設定などレイヤーをまたがって同じ値を参照できるようにしたかった
- ので、cocos2d::CCDirector を参考に設定用のシングルトンオブジェクトを作ってみた
設定用オブジェクトのヘッダー
#include <iostream>
class GameConfig
{
private:
int someValue;
public:
GameConfig(int level);
static void initObject(int level);
static GameConfig* getObject();
int getSomeValue() { return someValue; };
};
設定用オブジェクトの実装
#include "GameConfig.h"
static GameConfig* s_Object = NULL;
void GameConfig::initObject(int level)
{
if (!s_Object) {
s_Object = new GameConfig(level);
}
}
GameConfig* LevelConfig::getObject()
{
return s_Object;
}
GameConfig::GameConfig(int level)
{
switch (level) {
case LEVEL_EASY:
{
someValue = 1;
break;
}
case LEVEL_HARD:
{
someValue = 2;
break;
}
default:
{
break;
}
}
使い方
- ルートのレイヤーの init() などで初期化を実行
- ルートのレイヤーや子供のレイヤーで、GameConfig::getObject() で参照