• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

풀링부분에서 푸쉬가 잘 안됩니다

24.01.18 16:51 작성 24.01.19 15:54 수정 조회수 115

0

2024/1/18

오브젝트를 풀링을 만들어 보았는데

풀링은 되는데 자식 오브젝트들이 모두 사라집니다

아래 사진은 1번 씬에 배치한 유닛사진이고

그 아래는 1번씬의 유닛을 푸쉬하고 2번씬에 팝한 모습입니다.

같은 씬에서 팝한 다음 푸쉬를 진행했을 때

6마리를 팝하고 푸쉬했는데 6마리 모두 자식오브젝트가 사라진 모습입니다.

 

바닥 타일도 모두 풀링을 사용하고 있는데 타일은 풀링이 잘됩니다 타일안에 자식오브젝트를 넣어놔도 같이 풀링되는데

유닛 오브젝트만 풀링이 이상하게 되는 이유를 모르겠어요.

 

디버그 해볼려고 노력해본 내용도 추가합니다

팝후 디버그화면에서 마우스로 하위오브젝트를 모두 비활성화 시키고 삭제하면 하위 오브젝트는 삭제되지않는다

하지만 코드로 할 경우 삭제된다.

팝하고 위치나 로테이션을 변환하지 않아도 하위 오브젝트가 사라진다.

씬 clear를 거치지 않고 수동으로 푸쉬시에도 하위 오브젝트가 사라진다.

푸쉬할때 활성화된 하위 오브젝트만 사라진다.

 

2024.1.19

해결은 했는데 원인은 모르겠습니다.

제가 사용하는 건 씬에 오브젝트 하나를 만들고 풀링된 오브젝트들을 한 오브젝트의 자식으로 모두 보내고

삭제시 상위 오브젝트에서 자식 오브젝트를 모두 삭제하는 방법을 사용 했었고

 

강의 내용을 보면서 이 부분을

리스트를 통한 저장 삭제 방식을 하였더니 해결 되었습니다.

해결은 했는데 왜 해결되었는지 궁금하네요

 

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.20

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

주희용님의 질문에 대해 답변드리겠습니다.

풀링 시스템 구현 과정에서 자식 오브젝트가 사라지는 현상은 흔히 발생할 수 있는 문제입니다. 오브젝트를 풀로부터 가져온 후(팝) 다시 풀로 되돌려놓는 과정(푸시)에서 발생합니다. 주로 게임 오브젝트 풀링 로직에 문제가 있는 경우 자식 오브젝트들이 함께 삭제되거나 잘못된 방식으로 비활성화 되기 때문에 발생할 수 있습니다.

주희용님께서 마지막에 언급하신 리스트를 통한 저장 및 삭제 방식으로 해결하셨다면, 아마도 리스트에서 관리하는 방식이 자식 오브젝트들의 상태를 보다 정확하게 유지하면서 풀링하지 않은 이전의 방식에서 발생했던 문제점을 해소한 것으로 생각됩니다.

해결이 되었다면 무엇보다 다행이지만, 원인을 파악하기 위해서는 풀링 로직의 구체적인 구현 내용을 검토해볼 필요가 있을 것 같습니다. 특히, 다른 타일 오브젝트와의 차이점, 자식 오브젝트를 다루는 방식에서 발생할 수 있는 문제들, Destroy 호출 시점과 방식, 풀링되는 오브젝트의 활성화/비활성화 처리 등을 주의 깊게 살펴보아야 할 것입니다.

더 정확한 원인 분석을 위해 실험적으로 코드의 일부를 변경하여 동작을 관찰하거나, 디버그 로그를 적극 활용해서 자식 오브젝트의 상태 변화를 로그에 남기면서 추적해보시는 것을 추천드립니다.

추가적인 문제가 발생하거나, 궁금한 점이 있으시다면 언제든지 추가 질문을 남겨주세요.