본문 바로가기

Programming

오브젝트풀과 옵저버 패턴

문제

오브젝트 풀에 객체를 생성하고 해제하는 과정에서

객체 클래스와 오브젝트 풀 클래스 간에 생기는 연결이 불필요해 보임

 

해결 방안

객체 선언 시, 해제할 때 처리하는 콜백함수만 있다면 깔끔하게 처리가능

 

방법

하나의 클래스가 여러객체를 관리한다는 점에서 옵저버 패턴과 비슷하기에 결합해서 코드 작성

 

코드

public class bombManager : objectPool
{
    public GameObject m_bomb;

    // Start is called before the first frame update
    void Start()
    {
        /* delete 콜백  */ utility.Del cb_delete = new utility.Del(DeleteBomb);
        
        // 오브젝트 풀에 미리 생성
        InitObjectMemory(m_bomb, 5, cb_delete);
    }

    public void MakeBomb(Vector3 pos)
    {
        // 1. 생성된 오브젝트 사용
        GameObject obj = MakeObject();
        
        // 2. 위치 지정
        obj.transform.position = pos;
        
        // 3. 물폭탄 동작 시작
        obj.GetComponent<bomb>().StartBomb();
    }

'Programming' 카테고리의 다른 글

[C#] 이란  (1) 2020.03.09
소켓 프로그래밍  (0) 2020.03.03
[C++]가상 함수  (0) 2020.03.03
C#의 Delegate - CallBack 만들기  (0) 2020.02.25
SVN과 GIT  (0) 2020.02.06