[Unity] 오브젝트 풀링 작업 진행

고현규·2024년 1월 25일
0

오브젝트 풀링이 필요해 보여 아래의 참고 자료를 보며 만들었다.
참고자료) https://starlightbox.tistory.com/84, https://www.youtube.com/watch?v=JxP-kqstMAY

내 코드에 알맞게 수정해야 되는 점에서 수정하고 조금 고민해야 되는 점들이 있었다.

문제점

  1. 제공하는 Instantiate메서드대신 개별 메서드를 사용하는 점

InstantiatePrefab메서드 뒤에 생성될 프리팹 이름과 위치를 입력받아야한다.
현재 기본으로 Null 부모 위치로 들어가는데, 정 가운데 위치로 되어있다.
발사하는 위치를 캐릭터에 SerializeField로 만들어 뒀는데 이것을 이쪽으로 가져와야 한다.

  1. Manager로 만들어야 했던 이유
private IObjectPool<Bullet> _Pool;

void Update()
{
	var bullet = _pool.Get()
}

Get함수 사용해서 Pooling할 오브젝트를 가져올 수 있는데,
유튜브 영상에서는 ObjectPool을 선언한 곳에서 Get()함수를 사용할 수 있었다.

하지만, 나의 경우는 캐릭터 함수에 ObjectPool을 넣고 싶지 않았기 때문에
싱글턴으로 ObjectPoolManager로 만들어 받아오는 것으로 사용했다.

var testProejctile = Manager.ObjectPool.Pool.Get()

위 코드를 Player가 공격할 때 발사체를 생성하는 메서드에 넣었다.


3. SetActive(false)가 된 발사체가 Hierarchy에 보이지 않음

오브젝트 풀이 진행되면 SetActive(false) 형태로 계층구조에 남아있어야 하는데 보이지 않는다.
분명 게임 플레이는 되는데 오브젝트 풀이 제대로 작동하지 않는게 확인됐다.

내일 다시 위의 수정사항들을 고칠 시간을 가져야 겠다.

profile
게임 개발과 기획

0개의 댓글