Unity Dictionary Enum Key Boxing Problem

최대 1 분 소요

알려진 해결법 1

Customize Compare

간단하지만 매번 키로 사용할 Enum의 Comparer를 계속 만들어줘야 한다는 불편함이 있다.

알려진 해결법 2

Create Dynamic Method

그러나 AOT플랫폼에선 동작하지 않는다. 기존 IOS 64비트, 2019.8월부터는 안드로이드도 64비트 빌드가 강제되기 때문에 IL2CPP로 빌드해야 하므로 위의 방법으론 해결을 못함.

스크립팅 제약

알려진 해결법 3

unsafe 키워드로 C++문법을 사용하여 직접 주소 접근 방식(PlayerSetting에 “Allow ‘unsafe’ Code”를 꼭 체크하여야 사용 가능)

출처

위 코드로 Enum을 int로 바꾸어 EnumDictionary로 컨테이너 만들어서 사용

프로파일러 비교(기본 Dictionary vs EnumDictionary)

기본 dictionary add profiler

_

enum dictionary add profiler

_

할당되는 메모리 용량과 속도 모두 EnumDictionary가 우월..!

태그:

카테고리:

업데이트: