在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类扩展每个场景,直接使用变量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_ */
这只是一种方法。只要调用constant .h,你就会得到静态全局变量
#include "Constants.h"
bool BaseScene::init()
{
if(!Layer::init())
return false;
//Some Sprite that you have already created
sprite->setPosition(CENTER_VECTOR);//
}
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- 类与私有变量的其他类之间的线程安全性
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- GlobalAlloc而不是其他分配方法
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 结构和双指针隐藏在其他结构中,多层混淆
- UE4在OnComponentBeginOverlap上铸造其他actor
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 保留对其他类的成员函数的引用
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 无法从非原点的其他位置旋转对象
- 在Cocos2d-x中有效地存储屏幕大小、原点和其他全局变量