在Cocos2d-x中有效地存储屏幕大小、原点和其他全局变量

Efficient way to store screen size, origin, and other global variables in Cocos2d-x?

本文关键字:原点 其他 全局变量 Cocos2d-x 有效地 存储 屏幕      更新时间:2023-10-16

我正在使用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类扩展每个场景,直接使用变量windowSizewindowOrigin

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

/*
* 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_ */

这只是一种方法。只要调用constant .h,你就会得到静态全局变量

#include "Constants.h"
bool BaseScene::init()
{
  if(!Layer::init())
     return false;
  //Some Sprite that you have already created
  sprite->setPosition(CENTER_VECTOR);//
}
相关文章: