도드넷
유니티 destroy 게임 오브젝트 삭제 vs SetActive(false) 오브젝트 풀링. 본문
유니티 destroy vs 유니티 SetActive(false).
유니티 게임 오브젝트를 제거 삭제할때 어떻게 해야할까?
1. 만약 게임 오브젝트가 재사용 되지 않는다면 삭제해야한다.
Destroy(gameObject);
2. 만약 게임 오브젝트가 재사용되면 삭제하지 않고 비활성화 시킨다.
gameObject.SetActive(false);
가장 좋은예로 투사체(총알), 특수 효과(FX)는 매우 자주 계속 반복되서 사용되므로
미리 만들어놓고 List에 넣어서 ON/OFF를 반복하며 꺼내쓰는 기법인 오브젝트 풀링을 사용하면 좋다.
왜냐하면 게임 오브젝트를 생성(Instantiate)하고 삭제(Destroy)하는 작업은 약간 고사양이며
잦은 생성과 삭제로 GC가 불려 프레임 감소를 일으킬 수 있기 때문이다.
반면 사용수가 적고 한번 사용후 게임 플레이와 전혀 관계 없어지는 물체.
좋은 예로 플레이어에게 사망한 적 유닛, 사용하지 않아서 꺼버린 장식물등이 있다.
이런것들은 되도록 [파괴] Destroy(게임 오브젝트); 를 써서 아예 씬에서 삭제해주면 씬에 오랫동안 머문다고 가정했을때의 퍼포먼스를 향상시키고 메모리 RAM 쪽에 부담을 줄여줄 수 있다.
단, 주의해야할 점은 Destroy 할시 레퍼런스들이 null이 되므로 != null 조건문을 꼼꼼하게 많이 써줘야한다.
반응형
'창고 > 게임 개발 [Hidden]' 카테고리의 다른 글
유니티 구글 광고, 구글 애드몹 API 설치하기. (유니티 광고 VS 구글 애드몹) (0) | 2022.07.13 |
---|---|
유니티 구글 플레이 API 설치법 - Unity Googleplay API 설치및 업데이트. 로그인 기능 추가하기. (0) | 2022.07.13 |
유니티 Lerp Mathf Lerp의 활용? - 피해량 비율 증감 공식(?) (0) | 2022.07.02 |
유니티 C# 레퍼런스 오류 - 형식 또는 네임 스페이스 이름을 찾을 수 없습니다. (0) | 2022.03.26 |
C# 리스트 순서 섞기 List Shuffle - 리스트 랜덤 순서 섞는법. (0) | 2022.03.13 |
Comments