因为需要在不同的scene间共享游戏数据,所以有了singleton的需求,google了一下,已经有现成的说明了,原文地址:http://zilongshanren.com/blog/2012/09/23/cocos2d-x-design-pattern-singleton1/。这里只摘抄感兴趣的部分:
游戏开发中如何运用此模式呢?众所周知,游戏开发中离不开游戏数据保存和加载。这些数据包括关卡数据、游戏进行中的状态数据等。这样一些信息很多游戏模块中都需要访问,所以可以为之设置一个单例对象。我武断地认为,客户端游戏开发中,至少需要一个单例对象。因为一个全局的访问点可以方便很多对象之间的交互。根据之前的讨论,也可以把一些时觉需要用到的类引用保存在此单例对象中,不过只需要保存弱引用即可。使用单例,最严重的就是怕内存泄漏,所以,大家尽量不要把单例类设计地太复杂,也不要让它包含过多的动态内存管理工作。
单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局的访问点。
它的一般实现如下所示:
Singleton1 |
|
注意,这里只是最基本的实现,它没有考虑到线程安全,也没有考虑内存释放。但是,这个实现有两个最基本的要素。一:定义一个静态变量,并把构造函数等设置为私有的。二:提供一个全局的访问点给外部访问。