기본 패턴
csharp
private Rigidbody body;
private void Awake()
{
body = GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
body.AddForce(Vector3.forward * 4f);
}설명
- 같은 오브젝트에 붙은 컴포넌트를 참조할 때는 보통
Awake에서 한 번 가져와 저장합니다. Update나FixedUpdate안에서 매 프레임GetComponent를 반복 호출하는 것보다 읽기도 쉽고 의도도 분명합니다.- 다른 오브젝트를 참조해야 하면
SerializeField로 인스펙터에서 연결하는 방식이 더 안전할 때가 많습니다.
짧은 예제
csharp
[SerializeField] private Transform target;
private void LateUpdate()
{
transform.LookAt(target);
}빠른 정리
| 상황 | 추천 패턴 |
|---|---|
| 같은 오브젝트 컴포넌트 | Awake에서 GetComponent |
| 자식 오브젝트 컴포넌트 | GetComponentInChildren |
| 외부 참조 연결 | SerializeField |
주의할 점
GetComponent 결과가 없을 수도 있으니, 필수 컴포넌트라면
RequireComponent를 같이 고려하면 실수를 줄일 수 있습니다.
참고 링크
2 sources