cocos2dx3.0游戏编程3-动作游戏之类对象交互

游戏对象与对象之间免不了进行互动, 比如玩家要攻击敌人,体积碰撞的检测,等等,最初落羽用的是最笨的方法,就是在类里面保存其他类的指针,事实证明这样做会带来很多麻烦,而且很不方便,特别是在类销毁的时候,非常容易导致程序崩溃。现在落羽教大家一种比较方便的方法,单例类。

1.实现思路

单例类, 顾名思义,就是只被实例化一次,我们在单例类里面储存各个对象的指针,以便于对象之间的交互。

2.程序

类模板

#ifndef __SINGLETON_H__
#define __SINGLETON_H__

template <class T>
class Singleton
{
public:
	static inline T* getInstance();
	void release();
protected:
	Singleton(){}
	~Singleton(){}
	static T* m_instance;
};

template <class T>
inline T* Singleton<T>::getInstance()
{
	if (!m_instance)
	{
		m_instance = new T;
	}
	return m_instance;
}
template <class T>
void Singleton<T>::release()
{
	if (!m_instance)
	{
		return;
	}
	delete m_instance;
	m_instance = 0;
}

#endif


单例类头文件

#ifndef GLOBAL_H
#define GLOBAL_H

#include "cocos2d.h"
#include "Singleton.h"
#include "Define.h"
#include "Player.h"

using namespace cocos2d;

class Global : public Singleton<Global>
{
public:
	Global();
	~Global();
	Player *player;

};

#endif
单例类实现

#include "Global.h"

template<> Global* Singleton<Global>::m_instance = NULL;
Global::Global()
{
	player = NULL;
}

Global::~Global()
{

}


单例类的使用

Global::getInstance()->player //访问单例类里面的对象

 

3.单例类用起来确实很方便,很轻松的就解决了对象之间的交互问题,这节就到这里,下次我们讲碰撞检测系统。

你可能感兴趣的:(游戏,cocos2dx,游戏编程,cocos2dx3.0游戏编程,cocos2dx动作游戏)