String
-
Object.name프로퍼티는 호출하는 것 자체만으로 가비지를 하나 생성한다. -
GameObject.tag프로퍼티는 호출하는 것 자체만으로 가비지를 하나 생성한다.- 태그 비교 시 반드시
.CompareTag()메소드를 사용해야 한다.
- 태그 비교 시 반드시
Component
GetComponent<T>()메소드는 호출하는 것 자체만으로 가비지를 하나, 에디터에서는NullErrorWrapper까지 하나 더 생성한다.- 반드시
TryGetComponent()메소드를 사용하는 것이 좋다. (가비지를 생성하지 않는다.)
- 반드시
Collections
-
List<T>,Dictionary<K,V>와 같은 제네릭 컬렉션은new를 통한 객체 생성을 최대한 피하고, 대신.Clear()로 내부를 비우며 재사용하는 것이 좋다. -
제네릭 컬렉션은 크기가
4부터 두배씩 증가할 때마다 내부의 기존 배열을 제거하고 새로운 배열을 할당하므로, 객체 생성 시 생성자의 매개변수로capacity를 미리 지정해주는 것이 좋다.
Delegates
-
Action,Action<T>,Func<T>등의 델리게이트 타입 변수들은 힙에 할당된다. -
따라서 가비지를 생성한다.
-
매개변수를 통한 전달 시 클래스 타입과 마찬가지로 참조를 전달한다.