이번 시간에는 오브젝트 풀링을 해보도록 하겠습니다.
게임을 하다보면 많은수의 적이 몰려나올 때가 있는데요, 이때 모든 적들을 만들어주기에는 무리가 있겠죠. 그래서 저희가 사용할 것은 오브젝트 풀링 입니다.
먼저 저번시간에 만들었던 적 오브젝트들 중 모양이 다른 한놈씩만 놔두고 나머지 적들은 지워줍니다.
그 뒤 남아있는 적 오브젝트를 새로 Prefabs 폴더를 만들어 넣어주게 되면 오브젝트의 아이콘 색깔이 파란색으로 변하게 됩니다.

또한, 저 폴더의 오브젝트들의 크기를 바꾸거나 하면 저 오브젝트들이 화면에 여러개 복사되어 있을 때 다같이 적용이 된다는 장점이 있습니다.
또한, 오브젝트를 많이 만들고 지우고 하면 프레임에 좋지 않은 영향을 끼치는데, 그 문제를 해결하기 위해서 오브젝트 풀링을 사용하게 됩니다.
먼저 계층창에서 create empty를 눌러 빈 오브젝트를 생성해주고, 그 오브젝트의 이름을 PoolManager라고 지어줍니다.
또한 스크립트 폴더에서 c# 스크립트를 만들어 아래와 같이 코드를 작성해줍니다.
이 코드를 간략하게 설명하자면 모든 변수들을 초기화 해준 상태입니다. prefabs의 경우에는 public이기 때문에 유니티 창에서 prefabs폴더에 들어있는 적 오브젝트를 끌어다 넣어 해주었고, pools의 경우에는 이제 리스트 안에 들어있는 것들까지 다 초기화 해주기 위해서 for문을 돌려서 하나하나 초기화 해주었습니다.
또한, 마지막줄의 디버그는 코드가 잘 돌아가는지 확인하기 위해 넣었습니다.
그 뒤 이제 오브젝트 풀링을 위한 코드를 추가했습니다.
먼저 GameObject를 리턴하는 함수 get을 만들어줍니다. pools 리스트를 돌아주면서 만약 아이템이 살아있는 상태라면 그 아이템을 활성화시킵니다.
만약 아무것도 없었어서 null인 상태로 계속 그대로였다면 index번째의 모양을 복사해서 실행시키고 풀 리스트에 추가해줍니다.
참고로 foreach는 for문과 비슷하지만 리스트에 있는 모든 변수들을 확인해보는 그러한 for문입니다.
다음 시간에는 오브젝트 풀링을 이어서 구현해보도록 하겠습니다. 방학이 이제 시작한지 한달이 되어가는데, 남은 방학동안에도 쭉 이어서 열심히 유니티를 해보도록 하겠습니다.
이글은 아래의 영상을 따라하는 과정을 기록하고자 올리는 글 입니다. 만약 더 궁금하신 사항이 있다면 아래의 영상을 참고해주시면 감사하겠습니다!
'유니티 > 뱀서라이크' 카테고리의 다른 글
| 뱀서라이크 따라하기 - 소환레벨 적용하기 2번째 (0) | 2023.07.31 |
|---|---|
| 뱀서라이크 따라하기 - 오브젝트 풀링 2번째 (0) | 2023.07.30 |
| 뱀서라이크 따라하기 - 적 구현하기 2편 (0) | 2023.07.28 |
| 뱀서라이크 따라하기 - 적 구현하기 (0) | 2023.07.27 |
| 뱀서라이크 따라하기 - 4강 재배치 로직 마무리 (0) | 2023.07.26 |