형변환(Casting)에 대해 알아보자.
형식 변환은 데이터 타입을 다른 타입을 바꾸는 것을 의미한다.
C#에선 크게 두 가지가 있다.
1. 값 형식 변환 (value Type Casting) -> int, float 같은 기본형 변환
2. 참조 형식 변환 (Reference Type Casting) -> 클래스, 인터페이스간의 변환
✅ 1. GameObject -> Component 변환
GameObject obj = GameObject.Find("Player");
PlayerController controller = obj.GetComponent<PlayerController>();
✅ 2. 부모 클래스 -> 자식 클래스 변환 (다운캐스팅)
Enemy enemy = new BossEnemy(); // 업캐스팅 (자동)
BossEnemy boss = (BossEnemy)enemy; // 다운캐스팅(명시적)
✅ 3. as 키워드
⭐as는 예외를 던지지 않기 때문에 안전하고 형변환을 시도할 때 사용된다. 실패하면 null을 반환한다.⭐
Component c = GetComponent("PlayerController")
PlayerController p = c as PlayerController;
if (p != null)
p.Move();
✅ 4. is 키워드
형을 체크할 때 사용되며 반환값은 true/false 이다.
요즘 C# 버전에서는 아래처럼 더 간단히 사용 가능 하다.
if (obj is PlayerController p)
p.Move();
Unity에서 형변환은 눈에 보이지 않지만 항상 일어나고 있다.
특히 GetComponent, 상속 구조, 스크립트 참조 등에서 참조형 캐스팅이 자주 사용된다.