在 Cocos2d-x 中存储屏幕尺寸、原点和其他全局变量的有效方法?
Efficient way to store screen size, origin, and other global variables in Cocos2d-x?
我正在使用 Cocos2d-x V3.x
构建一个 2d 游戏
我想知道,存储屏幕尺寸变量、原点变量和其他可以在整个游戏过程中保持不变的最佳方法是什么?
例如:
Size windowSize = Director::getInstance()->getVisibleSize();
Vec2 windowOrigin = Director::getInstance()->getVisibleOrigin();
我相信这些可以设置为全局变量。
最有效的方法是什么?
有争议的单例是不是最好的方式?
或者我应该让每个 .cpp 文件在每次创建场景时都有自己的 windowSize 变量吗?
有很多种实现方式,如果你想用一个变量在所有场景中使用,你可以按照下面的方式实现。
//in header
class BaseScene : public Scene
{
protected:
Size windowSize;
Vec2 windowOrigin;
};
//cpp file
BaseScene::BaseScene() {
windowSize = Director::getInstance()->getVisibleSize();
windowOrigin = Director::getInstance()->getVisibleOrigin();
}
现在从 BaseScene class 扩展每个场景并直接使用变量 windowSize
和 windowOrigin
我只是创建了一个非常简单的头文件。
/*
* Constants.h
*
* Created on: Jul 2, 2016
* Author: OscarLeif
*/
#ifndef CONSTANTS_H_
#define CONSTANTS_H_
#include "cocos2d.h"
#include "ui/CocosGUI.h"
#define CENTER_VECTOR Vec2(Director::getInstance()->getWinSize().width*0.5f,Director::getInstance()->getWinSize().height*0.5f)
#define WIN_SIZE Director::getInstance()->getWinSize()
USING_NS_CC;
using namespace ui;
class Constants
{
public:
Constants();
virtual ~Constants();
};
#endif /* CONSTANTS_H_ */
这只是一种方法。只需调用 Constanst.h,您将拥有静态全局变量
#include "Constants.h"
bool BaseScene::init()
{
if(!Layer::init())
return false;
//Some Sprite that you have already created
sprite->setPosition(CENTER_VECTOR);//
}
我正在使用 Cocos2d-x V3.x
构建一个 2d 游戏我想知道,存储屏幕尺寸变量、原点变量和其他可以在整个游戏过程中保持不变的最佳方法是什么?
例如:
Size windowSize = Director::getInstance()->getVisibleSize();
Vec2 windowOrigin = Director::getInstance()->getVisibleOrigin();
我相信这些可以设置为全局变量。
最有效的方法是什么?
有争议的单例是不是最好的方式?
或者我应该让每个 .cpp 文件在每次创建场景时都有自己的 windowSize 变量吗?
有很多种实现方式,如果你想用一个变量在所有场景中使用,你可以按照下面的方式实现。
//in header
class BaseScene : public Scene
{
protected:
Size windowSize;
Vec2 windowOrigin;
};
//cpp file
BaseScene::BaseScene() {
windowSize = Director::getInstance()->getVisibleSize();
windowOrigin = Director::getInstance()->getVisibleOrigin();
}
现在从 BaseScene class 扩展每个场景并直接使用变量 windowSize
和 windowOrigin
我只是创建了一个非常简单的头文件。
/*
* Constants.h
*
* Created on: Jul 2, 2016
* Author: OscarLeif
*/
#ifndef CONSTANTS_H_
#define CONSTANTS_H_
#include "cocos2d.h"
#include "ui/CocosGUI.h"
#define CENTER_VECTOR Vec2(Director::getInstance()->getWinSize().width*0.5f,Director::getInstance()->getWinSize().height*0.5f)
#define WIN_SIZE Director::getInstance()->getWinSize()
USING_NS_CC;
using namespace ui;
class Constants
{
public:
Constants();
virtual ~Constants();
};
#endif /* CONSTANTS_H_ */
这只是一种方法。只需调用 Constanst.h,您将拥有静态全局变量
#include "Constants.h"
bool BaseScene::init()
{
if(!Layer::init())
return false;
//Some Sprite that you have already created
sprite->setPosition(CENTER_VECTOR);//
}