Cocos2dx小技巧 单例
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小技巧 单例相关推荐
- Cocos2dx 小技巧(一)预定义文件路径
通宵想了一晚(如果你信的话),打算出一栏cocos2dx小技巧相关的博客,有以下几种特点: 1.精简: 2.实用: 3.偶尔带点暴力,黄... 我们的主题是:有些技巧你不知道不要紧,但知道后会很牛逼. ...
- javascript小技巧-500例
搜集的一些javascript小技巧!事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCap ...
- Android小知识-单例引起的内存泄漏
本平台的文章更新会有延迟,大家可以关注微信公众号-顾林海,包括年底前会更新kotlin由浅入深系列教程,目前计划在微信公众号进行首发,如果大家想获取最新教程,请关注微信公众 单例模式在Android开 ...
- Cocos2dx 小技巧(九)现成的粒子特效
和高中的她 差不多有两三年没见面了吧.下午她正好来泉州,我俩出来一起吃了个饭.怎么说呢,自从高中毕业后我俩的联系就少了很多,大学期间也就见过两三面吧.如今毕业也快一年了,她已是人妇,而我自己的感情也是 ...
- Cocos2dx 小技巧(三)Label的换行
有些技巧你不知道不要紧,但知道后会很牛逼. 近来玩上了刀塔传奇,这游戏做的真心不错.为什么会有这种评价呢?本人虽然是开发游戏的,但能让我玩超过一小时的游戏真心不多(不包括自己参与开发的游戏,嘿).我虽 ...
- css小技巧 -- 单标签实现单行文字居中,多行文字居左
可能出现的尺寸场景: 代码如下: <!DOCTYPE html> <html lang="zh"><head><meta charset= ...
- Cocos2dx 小技巧(十五)话说ScrollView的delegate实现过程
转眼六月份都快过去了,我发现这个月我一篇博客都没发表.表示很羞涩...... 下个月很有可能会迎来博客大爆发,只是博客的主题有点......呃,留点悬念吧. --------------------- ...
- 视频教程-让你事半功倍的12个Excel小技巧-Office/WPS
让你事半功倍的12个Excel小技巧 Adobe平面设计与影视剪辑专家讲师.微软Office办公软件专家讲师.资深IT图书作者/策划人/出版人.深度/终身学习研究与实践者.Python全栈工程师/We ...
- 宜出行热力图怎么抓取_滴滴听不到单怎么办?七个小技巧
快速解决听单问题 掌握小技巧 及时排查去异常 听单领先一步 解决问题流程 1.第一次自行使用软件听单功能检测 2.第二次自行重启手机&GPS操作 3.第三次自行使用软件热力图 派单规则到 ...
最新文章
- Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例
- wordpress android,WordPress for Android 2.0 试用记
- PostgresSQL生成UUID
- mongodb数据合并设计_MongoDB:如何将来自多个集合的数据合并成一个.?
- docker 报错 /usr/bin/docker-current: Error response from daemon: driver failed programming external
- linux树莓派连接wifi热点,如何将树莓派设置为WiFi热点
- 在JUnit测试中使用Builder模式
- 使用 Python 获取 Linux 系统信息的代码
- 2004-4-3+ asp.net编程环境的配置
- 深度学习 个性化推荐_生产中的深度强化学习第2部分:个性化用户通知
- AvalonDock
- 澄清server push/websocket/sse的一些概念
- mysql 联合主键 自增_mysql联合主键,自增长(要区分数据库引擎)
- iPhone手机数据找回指南2:iPhone手机使用技巧
- Facemark:使用OpenCV进行面部特征点检测
- 基于 Vue 和 SpringBoot 实现的博客系统(附源码)
- MyBatis框架的优缺点及其适用场合
- eaysui datagrid 点击添加单元格
- Ubuntu 22 安装gcc7 g++7
- [论文笔记]ENet