2019独角兽企业重金招聘Python工程师标准>>>

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

假如你是个一个男的,但是你私生活不能自理:不会煮饭,洗衣服,穿的衣服永远都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}

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

转载于:https://my.oschina.net/u/2276921/blog/537048

Cocos2dx小技巧 单例相关推荐

  1. Cocos2dx 小技巧(一)预定义文件路径

    通宵想了一晚(如果你信的话),打算出一栏cocos2dx小技巧相关的博客,有以下几种特点: 1.精简: 2.实用: 3.偶尔带点暴力,黄... 我们的主题是:有些技巧你不知道不要紧,但知道后会很牛逼. ...

  2. javascript小技巧-500例

    搜集的一些javascript小技巧!事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCap ...

  3. Android小知识-单例引起的内存泄漏

    本平台的文章更新会有延迟,大家可以关注微信公众号-顾林海,包括年底前会更新kotlin由浅入深系列教程,目前计划在微信公众号进行首发,如果大家想获取最新教程,请关注微信公众 单例模式在Android开 ...

  4. Cocos2dx 小技巧(九)现成的粒子特效

    和高中的她 差不多有两三年没见面了吧.下午她正好来泉州,我俩出来一起吃了个饭.怎么说呢,自从高中毕业后我俩的联系就少了很多,大学期间也就见过两三面吧.如今毕业也快一年了,她已是人妇,而我自己的感情也是 ...

  5. Cocos2dx 小技巧(三)Label的换行

    有些技巧你不知道不要紧,但知道后会很牛逼. 近来玩上了刀塔传奇,这游戏做的真心不错.为什么会有这种评价呢?本人虽然是开发游戏的,但能让我玩超过一小时的游戏真心不多(不包括自己参与开发的游戏,嘿).我虽 ...

  6. css小技巧 -- 单标签实现单行文字居中,多行文字居左

    可能出现的尺寸场景: 代码如下: <!DOCTYPE html> <html lang="zh"><head><meta charset= ...

  7. Cocos2dx 小技巧(十五)话说ScrollView的delegate实现过程

    转眼六月份都快过去了,我发现这个月我一篇博客都没发表.表示很羞涩...... 下个月很有可能会迎来博客大爆发,只是博客的主题有点......呃,留点悬念吧. --------------------- ...

  8. 视频教程-让你事半功倍的12个Excel小技巧-Office/WPS

    让你事半功倍的12个Excel小技巧 Adobe平面设计与影视剪辑专家讲师.微软Office办公软件专家讲师.资深IT图书作者/策划人/出版人.深度/终身学习研究与实践者.Python全栈工程师/We ...

  9. 宜出行热力图怎么抓取_滴滴听不到单怎么办?七个小技巧

    快速解决听单问题 掌握小技巧 及时排查去异常 听单领先一步  解决问题流程 1.第一次自行使用软件听单功能检测 2.第二次自行重启手机&GPS操作 3.第三次自行使用软件热力图   派单规则到 ...

最新文章

  1. Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例
  2. wordpress android,WordPress for Android 2.0 试用记
  3. PostgresSQL生成UUID
  4. mongodb数据合并设计_MongoDB:如何将来自多个集合的数据合并成一个.?
  5. docker 报错 /usr/bin/docker-current: Error response from daemon: driver failed programming external
  6. linux树莓派连接wifi热点,如何将树莓派设置为WiFi热点
  7. 在JUnit测试中使用Builder模式
  8. 使用 Python 获取 Linux 系统信息的代码
  9. 2004-4-3+ asp.net编程环境的配置
  10. 深度学习 个性化推荐_生产中的深度强化学习第2部分:个性化用户通知
  11. AvalonDock
  12. 澄清server push/websocket/sse的一些概念
  13. mysql 联合主键 自增_mysql联合主键,自增长(要区分数据库引擎)
  14. iPhone手机数据找回指南2:iPhone手机使用技巧
  15. Facemark:使用OpenCV进行面部特征点检测
  16. 基于 Vue 和 SpringBoot 实现的博客系统(附源码)
  17. MyBatis框架的优缺点及其适用场合
  18. eaysui datagrid 点击添加单元格
  19. Ubuntu 22 安装gcc7 g++7
  20. [论文笔记]ENet

热门文章

  1. Activity Service 数据相互操作
  2. 在Linux server上建立NAS文件服务器
  3. asp.net 获取插入记录的ID
  4. 【面试】吃透了这些Redis知识点,面试官一定觉得你很NB
  5. 前端面试题学习和总结
  6. UVA 10214 Trees in a Wood
  7. 如何管理 vue 项目中的数据?
  8. 智力题:关于进入房间一次,判断哪个开关控制哪盏灯的问题
  9. WordPress 设置图片的默认显示方式(尺寸/对齐方式/链接到)
  10. Uber将动态调价机制引入其外卖服务UberEats