Game Development

유니티 오브젝트 풀링 매니저 본문

Unity/My Scirpt

유니티 오브젝트 풀링 매니저

Dev Owen 2021. 6. 26. 02:57

오브젝트 풀링 매니저

오늘은 제가 직접 만들어 대부분 프로젝트에 사용하고 있는 오브젝트 풀링 매니저를 배포할려고 합니다.

 

그전에 오브젝트 풀링에 대해서 간단하게 알아보도록 하겠습니다.

간단하게 설명하자면 오브젝트 풀링이란 사전에 미리 사용할 오브젝트를 미리 만들어 두고 가져와서 사용하다가 필요없게 되면 나중에 재활용 할 수 있게 처리하는 시스템이라고 보시면됩니다.

 

이러한 과정을 통해서 생성과 삭제를 통한 연산을 줄일 수 있게되기 때문에 성능상 좋게 작용됩니다.


주요 기능

해당 오브젝트 풀링 매니저의 기능은 다음과 같습니다.

    1. 오브젝트 부족시 자동으로 확장합니다.

    2. 오브젝트 비활성화시 자동으로 반환되게 설정 가능합니다.

    3. 오브젝트 별로 자동 정리를 해줍니다.

    4. 오브젝트 이름으로 가져올 수 있습니다.

 

사용 방법

사용 방법 또한 어렵지 않습니다.

오브젝트에 컨퍼넌트를 추가하세요.

사용할 오브젝트와 풀링할 갯수를 입력해주시면 됩니다.

그럼 오브젝트 풀링에서 해당 오브젝트의 이름을 가진 폴더와 안에 갯수 만큼 생성이 됩니다.

동작중인 오브젝트 풀링 매니저


함수 목록

추가로 오브젝트를 스크립트 상에서 생성하기 위한 코드입니다.

ObjectPoolingManager.instance.Pool( _poolingObjectList );

오브젝트를 가져오는 코드 입니다.

GetObject는 오브젝트를 오브젝트에서 가져옵니다.

GetObjectAutoReturn은 오브젝트가 비활성화 될시 자동으로 반홥니다.

_rtnTime의 값을 입력할 경우 해당 시간에 따라 자동으로 오브젝트가 반환됩니다.

ObjectPoolingManager.instance.GetObject( _id );
ObjectPoolingManager.instance.GetObject( _id, _position, _rotation );
ObjectPoolingManager.instance.GetObject( _id, _position, _rotation, _parent );
ObjectPoolingManager.instance.GetObject( _id, _position, _rotation, _parent, _enable );

ObjectPoolingManager.instance.GetObject( _id, _rtnTime );
ObjectPoolingManager.instance.GetObject( _id, _rtnTime, _parent );
ObjectPoolingManager.instance.GetObject( _id, _rtnTime, _parent, _enable );

ObjectPoolingManager.instance.GetObject( _id, _position, _rotation, _rtnTime );
ObjectPoolingManager.instance.GetObject( _id, _position, _rotation, _rtnTime, _parent );
ObjectPoolingManager.instance.GetObject( _id, _position, _rotation, _rtnTime, _parent, _enable );

ObjectPoolingManager.instance.GetObjectToAutoReturn( _id );
ObjectPoolingManager.instance.GetObjectToAutoReturn( _id, _enable );

ObjectPoolingManager.instance.GetObjectToAutoReturn( _id, _position, _rotation );
ObjectPoolingManager.instance.GetObjectToAutoReturn( _id, _position, _rotation, _parent );
ObjectPoolingManager.instance.GetObjectToAutoReturn( _id, _position, _rotation, _parent, _enable );

 

 

사용이 끝난 오브젝트를 반환하는 방법입니다.

ObjectPoolingManager.instance.ReturnObject( _object );

마무리

해당 소스코드를 다운받는 주소입니다.

 

Dev-Owen-Git/Unity-ObjectPoolingManager

ObjectPoolingManager. Contribute to Dev-Owen-Git/Unity-ObjectPoolingManager development by creating an account on GitHub.

github.com

 

Comments