我正在使用Cocos2d-x V3.x构建一个2D游戏
我想知道,存储屏幕尺寸变量,原点变量以及其他可以在整个游戏中保持不变的最佳方法是什么?
例如:
This is my folder name : beers
我相信这些可以设置为全局变量。
最有效的方法是什么?
有争议的单身人士是最好的方式吗?
或者我应该在每次创建场景时让每个.cpp文件都有自己的windowSize变量?
答案 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类中的每个场景,并直接使用变量windowSize
和windowOrigin
答案 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);//
}