文档章节

Cocos2dx小技巧 单例

暖冰
 暖冰
发布于 2015/11/29 11:11
字数 762
阅读 49
收藏 0

首先来说下什么是单例:  
单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。  单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。 
上面这段话讲的很严谨,很抽象有木有!没错,你猜对了,它来自百度百科...  下面我用简短、无科学依据的语言组织一下 : 


假如你是个一个男的,但是你私生活不能自理:不会煮饭,洗衣服,穿的衣服永远都no fashion。这时候你需要什么?没错,需要一个女朋友!但这个女朋友你该怎么“使用”呢?给你以下两种选择:  
1、要洗衣服的时候“创建”一个女朋友(也就是去找一个女朋友),洗完后将女朋友甩了;当你要做饭,继续“创建”一个女朋友,做完后甩掉;甚至是当你需要满足某种不可告人的需求时,你需要“创建”一个女朋友...然后..  
2、找一个可以过一辈子的女朋友,永远在一起,你若不离,她便不弃!想怎么用就怎么用,省去了相亲等一系列麻烦!  
以上两种方法虽然都可以让你告别你的右手,但是第一种方法的前提条件太夸张了:你要是一个高富帅,像博主这样的。呵呵。呵呵  
所以,还是选第二种吧,也就是我们所说的单例模式,你想甩也甩不掉。  
好了,言归正传,为什么我们要用单例来设计游戏呢,参考这句话:  
众所周知,游戏开发中离不开游戏数据保存和加载。这些数据包括关卡数据、游戏进行中的状态数据等。这样一些信息很多游戏模块中都需要访问,所以可以为之设置一个单例对象。我武断地认为,客户端游戏开发中,至少需要一个单例对象。因为一个全局的访问点可以方便很多对象之间的交互。 
-----------------------------------------------------  
下面介绍单例的简单使用方法:  
1、声明一个类: 

class TestSingleton : public cocos2d::Layer{public:  static TestSingleton* getInstance();//创建一个全局访问点,例如我们常用的Director::getInstance()就是这样一个单例  void test();//测试单例时用到。private:  static TestSingleton* m_singleton;};

2、定义实现: 

TestSingleton* TestSingleton::m_singleton = nullptr;//m_singleton指向空指针TestSingleton* TestSingleton::getInstance()
{  //判断m_singleton是否已被实例化, 如果没有,将之实例  if(nullptr == m_singleton)  {    m_singleton = new TestSingleton();//  }  return m_singleton;
}void TestSingleton::test()
{  CCLOG("test testSingleton success~~");
}

3、测试单例 
我直接在HelloWorld这里测试。代码如下: 

bool HelloWorld::init()
{  TestSingleton::getInstance()->test();//调用TestSingleton里的test(),看控制台是否输出success}

很明显是成功的,我就不贴结果啦。


本文转载自:http://www.tuicool.com/articles/IvaQBv

共有 人打赏支持
暖冰
粉丝 48
博文 124
码字总数 116908
作品 1
长沙
程序员
私信 提问
杨超 (wantnon)/EffectNodes-for-Cocos2dx

EffectNodes for Cocos2dx by yang chao (wantnon), 2014-6-26 EffectNodes for Cocos2dx is a collection of 2d special effects implemented with cocos2dx. i will add more when i got g......

杨超 (wantnon)
2018/05/09
0
0
Cocos2d-x设计模式--二段构建模式

设计模式在程序设计中会经常用到,也许你从来没有留意过设计模式,其实你却一直在使用设计模式!cocos2dx中有不少的设计模式,所以从本篇博客开始探讨一下cocos2dx中的设计模式,看看引擎都使...

_子墨
2014/09/15
0
0
cocos2d-x js模版修改

创建cocos2d-x项目,导入引擎模版,避免每次都拷贝引擎到项目中,修改路径: D:commonscocos2d-xcocos2d-2.1rc0-x-2.1.3templatemsvcCCAppWiz.win32Scripts1033下的js文件如下: // Additio...

石头哥哥
2013/08/04
0
0
Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上

感谢听D同学赞助的Demo。 那怎样让它运行在vs中呢: 1 使用cocos2d-x-2.2toolsproject-creator文件夹中的create_project.py脚本,生成一个demo。 2 拷贝Classes和Resources文件夹到刚生成的d...

懒骨头
2013/12/09
0
0
Cocos2dx游戏开发系列笔记1:一个崭新的开始,cocos2dx2.2+ndkr9+Cygwin

Android开发者做cocos2dx最大的绊脚石,不是c++,而是环境的搭建... 骨头也是费了半天劲才终于在真机上看到了那个类似猕猴桃的头,这里简单记录一下。 环境:(算比较新了2013.11.17) coco...

懒骨头
2013/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux iptables之mangle表使用案例

mangle表的用途 mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangel表使用示例 示例1-策略路由1 内网的客户机通...

月下狼
38分钟前
2
0
OSChina 周日乱弹 —— 兼职我想去学学布偶戏

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy : 《火炎 - 女王蜂》 《火炎 - 女王蜂》 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :还在睡觉突然接到一个小哥哥电话“x...

小小编辑
50分钟前
46
3
租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
今天
3
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
6
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部