유니티/성능 관리(3)
-
Dictionary 에서 enum 을 Key 로 사용할 때 성능에 대해서
결론 요약 * 유니티 버전은 21.3.16f1 입니다. 1. enum 을 key로 사용해도 Add, ContainKey, Remove 를 사용할 때 GC가 발생하지 않는다. (string도 마찬가지) 2. (작성자가 사용하는) 실제 오브젝트 풀링 코드에서도 실행했을 때 GC가 발생하지 않는다. 3. 본인은 더 좋은 코드 개량을 할 수 있었다! 제가 보던 일부 강의에서는 오브젝트 풀링을 만들 때, 새 객체를 생성할 때마다 해당 객체를 생성해주는 코드를 작성하는 것을 보았습니다. 물론 기초 강의라서 초보자 입장에서는 이해하기 쉽도록 하기 위함이겠죠. 저는 그것을 최대한 단순화 시키기 위해서 enum 타입 값을 만들고 그것을 타입으로 지정해 Dictionary에 자동 분배하는 코드를 자주 사용했습니다. 인스펙..
2023.06.30 -
리소스에 대해
* 틀린 정보 지적은 언제나 감사합니다 * 리소스 폴더에 대해 공부하던 중 알게 된 정보를 적어보도록 하겠습니다. 1. Resources 폴더 Resources 폴더는 Resources.Load() 메서드를 사용할 때, 가져올 오브젝트들을 넣어두기 위해 사용한다고 합니다. 다른 폴더 아래에 여러 Resources 폴더가 있어도 된다고 하며 Resources 폴더 아래 다른 폴더가 여러개 있어도 된다고 합니다. 리소스 폴더는 빌드 시 모든 오브젝트가 resources.asset 형태의 파일로 빌드된다고 합니다. 이 과정에서 빌드 시 시간이 오래 걸리게 된다고 합니다. 2. Resources.Load() (이하 로드) 오브젝트를 로드할 때 가져온 정보는 사라지지 않고 캐시 정보로 메모리에 남는다고 합니다. ..
2023.05.14 -
게임 오브젝트 찾기(GameObject.Find())에 대해
* 잘못된 정보 지적은 항상 감사합니다 * 얼마 전, 공부하던 중 GameObject.Find() 에 대해 더 찾아본 적이 있었습니다. 이 동안 배운 내용들을 정리하여 적어보겠습니다. 1. 비활성화 오브젝트 찾기 GameObject.Find() 는 비활성화 상태의 오브젝트를 가져올 수 없다고 합니다. 비활성화 상태의 오브젝트를 가져오려면 Transform.Find() 를 사용해야 한다고 하더군요. 다만, Transform.Find는 자식 오브젝트만 가져올 수 있다고 합니다. 제가 사용하는 시점에서는 Transform.FindObjectOfType() 을 사용 가능한 모양입니다. 2. Find 의 단점 Find 계열 메서드는 모든 오브젝트를 검사해 찾아내기 때문에 성능에 좋지 못하다고 합니다. GetCom..
2023.05.14