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

단일 클래스 헤더 파일
4
#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. 단례류는 사용하기에 확실히 편리하고 대상 간의 상호작용 문제를 쉽게 해결할 수 있다. 이 부분은 여기까지 하고 다음에 충돌 검측 시스템에 대해 이야기하자.

좋은 웹페이지 즐겨찾기