在Cocos2d-x中存储屏幕大小,原点和其他全局变量的有效方法?

时间:2016-07-02 13:20:05

标签: c++ cocos2d-x

我正在使用Cocos2d-x V3.x构建一个2D游戏

我想知道,存储屏幕尺寸变量,原点变量以及其他可以在整个游戏中保持不变的最佳方法是什么?

例如:

This is my folder name : beers

我相信这些可以设置为全局变量。

最有效的方法是什么?

有争议的单身人士是最好的方式吗?

或者我应该在每次创建场景时让每个.cpp文件都有自己的windowSize变量?

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点,如果你想在所有场景中使用一个变量,你可以按照这种方式进行。

//in header
class BaseScene : public Scene
{
protected:
    Size windowSize;
    Vec2 windowOrigin;

};

//cpp file
BaseScene::BaseScene() {

    windowSize = Director::getInstance()->getVisibleSize();
    windowOrigin = Director::getInstance()->getVisibleOrigin();
}

现在扩展BaseScene类中的每个场景,并直接使用变量windowSizewindowOrigin

答案 1 :(得分:1)

我只是创建一个非常简单的头文件。

/*
* 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);//
}