Unity/기능

[Unity] const, readlony, static readonly

turbulence93 2025. 5. 1. 23:55
항목 설명
const 컴파일 타임 상수. 숫자/문자열 등 기본형에만 사용 가능. 
readonly 런타임 초기화 가능. 생성자 또는 선언 시 한 번만 설정 가능. 참조형도 허용.
static readonly 클래스 단위 공유 + 런타임 초기화. 실행 중 한 번만 설정되고 인스턴스 없이 접근 가능.
  • const
    • const의 경우 기본형만 사용할 수 있는데 이는 컴파일 시에 이미 값이 정해지는 특성 때문이다.
    • 그렇기 때문에 배열과 같은 변수를 선언할때 배열의 크기에 const 변수를 이용해 크기를 정할수 있다.
  • readonly
    • 런타임 시 1회 초기화 가능하다.
    • 프로퍼티를 이용하여 참조형도 허용하여 const보다 넓은 스펙트럼을 가진다.
  • static readonly
    • private static readonly라는 형식이 따로 있는건 아니고 static 에 private를 왜 붙일까 궁금해서 찾아보았다.
    • static자체가 전역에서 사용 가능함을 뜻하는건데 이를 private로 사용하는게 무슨 의미가 있지? 라는 의문이 들었다.
    • 이는 해당 클래스가 인스턴스화 되어도 항상 같은 값을 가지는 변수이기 때문에 모든 인스턴스 객체가 같은 값을 사용하게 만들때 선언한다.
    • private은 외부의 접근을 막는것이고, 인스턴스화 된 여러 개체에서 공유하도록 만드는 것이다.
    • 예를 들어 Enemy Animation에 isDamaged라는 파라미터가 있다고 가정해보자.
    • 이때 readonly를 통해 isDamaged를 해시값으로 변환하여 private static 으로 지정해준다.
    • 이는 어떤 Enemy객체를 생성해도 사용하는 값이기 때문에 인스턴화 하여도 새로 생성하지 않게 하여 메모리를 아껴준다.
    • const는 해시값을 변환하여 넣을수 없기때문에 readonly를 사용하면 제격이다.

'Unity > 기능' 카테고리의 다른 글

[Unity] UI의 Rect Transform  (0) 2025.05.04
[Unity] BoxCast로 히트 박스 제작하기  (1) 2025.05.02
[Unity] 2D - Mathf.Atan2를 이용한 Rotate 계산  (0) 2025.05.01
[Unity] Camera  (1) 2025.04.30
[Unity] Pixel per Unit(PPU)  (1) 2025.04.29