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.單例類用起來確實很方便,很輕鬆的就解決了對象之間的交互問題,這節就到這裏,下次我們講碰撞檢測系統。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章