강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

Razer님의 프로필 이미지
Razer

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Pool Manager #2

Push(Create()); 관련 질문 드립니다.

해결된 질문

작성

·

101

0

사놓은 강의가 너무 많아서 켠김까지 보기 전에 다시 복습하고 있는데, 난이도가 장난 아니네요 ㅎㅎ 그래도 하나씩 알아갈 수록 재미가 있습니다.

감사합니다.

다름이 아니라.

image.png

위 코드가 작동하는게, Create() 메서드로 실제로 Scene에 복사본들이 배치가 되면서 Poolable을 반환하는 거고, Push에 의해서 실제 배치되자 마자 바로 비활성화 시키면서 5개의 자리를 확보한다. 가 맞을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. Nam님.

질문해 주신 내용을 바탕으로 설명을 드리겠습니다.

코드의 작동 방식에 대해 이해하신 내용은 대부분 맞습니다. Create() 메서드는 Original 게임 객체의 복사본을 만들어 Poolable 컴포넌트를 추가하거나 이미 있다면 반환합니다. 이때, Push() 메서드를 통해 새로 생성된 객체들은 풀에 비활성화된 상태로 쌓이게 됩니다.

조금 더 세부적으로 설명드리자면:
- Create() 메서드는 Original 객체를 복사하고, 그 객체에 Poolable 컴포넌트를 추가해 줍니다. 반환되는 Poolable은 이 컴포넌트를 가지고 있는 게임 객체를 참조하게 됩니다.
- Push() 메서드는 만들어진 Poolable 객체의 부모를 Root로 설정하고, 해당 객체를 비활성화한 뒤 스택에 쌓습니다. 이는 객체들이 초기화되었고, 사용 가능한 상태로 대기 중임을 나타냅니다.

실제로 초기화가 진행되면 for 루프가 count 횟수만큼 실행되면서, 매 회 Create()를 호출하여 객체를 생성하고, Push()를 통해 풀에 비활성화하여 추가합니다.

관련된 더 많은 정보를 원하신다면 아래 링크들을 참고해 보시기 바랍니다.

  1. Pool Manager 관련 설명

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Razer님의 프로필 이미지
Razer

작성한 질문수

질문하기