Unity시작과 컴포넌트

GetComponent와 캐싱

`GetComponent`를 어디서 호출하고 언제 캐싱해야 하는지, 가장 자주 쓰는 참조 패턴을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

csharp
private Rigidbody body;

private void Awake()
{
    body = GetComponent<Rigidbody>();
}

private void FixedUpdate()
{
    body.AddForce(Vector3.forward * 4f);
}

설명

  • 같은 오브젝트에 붙은 컴포넌트를 참조할 때는 보통 Awake에서 한 번 가져와 저장합니다.
  • UpdateFixedUpdate 안에서 매 프레임 GetComponent를 반복 호출하는 것보다 읽기도 쉽고 의도도 분명합니다.
  • 다른 오브젝트를 참조해야 하면 SerializeField로 인스펙터에서 연결하는 방식이 더 안전할 때가 많습니다.

짧은 예제

csharp
[SerializeField] private Transform target;

private void LateUpdate()
{
    transform.LookAt(target);
}

빠른 정리

상황추천 패턴
같은 오브젝트 컴포넌트Awake에서 GetComponent
자식 오브젝트 컴포넌트GetComponentInChildren
외부 참조 연결SerializeField

주의할 점

GetComponent 결과가 없을 수도 있으니, 필수 컴포넌트라면 RequireComponent를 같이 고려하면 실수를 줄일 수 있습니다.

참고 링크

2 sources