Moon_B 게임개발 공부 업적
[Unity] TryGetComponent, View Frustum, Coroutine 알아보기 본문
Unity 추가 개념 정리
1. TryGetComponent
1.1 개념
TryGetComponent는 Unity에서 게임 오브젝트의 특정 컴포넌트를 안전하게 가져오는 메서드입니다. 이 메서드를 사용하면 컴포넌트가 존재하는지 확인한 후, 있다면 가져올 수 있습니다.
1.2 사용법
public bool TryGetComponent<T>(out T component) where T : Component;
- T: 가져올 컴포넌트 타입 (MonoBehaviour를 상속한 컴포넌트 사용 가능)
- component: out 매개변수를 사용하여 컴포넌트 저장
Rigidbody rb;
if (TryGetComponent<Rigidbody>(out rb))
{
rb.AddForce(Vector3.up * 100f);
}
else
{
Debug.Log("Rigidbody component not found.");
}
1.3 장점
- GetComponent<T>()와 달리 예외 발생 없이 안전한 방식으로 컴포넌트를 가져올 수 있음
- 성능적으로 GetComponent<T>()보다 효율적이며 불필요한 연산을 방지
2. 카메라 절두체 (View Frustum)
2.1 개념
카메라 절두체(View Frustum)는 카메라가 렌더링하는 공간의 형태를 나타내며, 원뿔의 윗부분을 자른 입체 형상입니다. 게임 내에서 보이는 영역을 결정하는 요소입니다.
2.2 조절 요소
- 시야각(FOV): 카메라의 시야 범위를 결정하는 값
- Near Clipping Plane: 카메라에서 가장 가까운 렌더링 가능한 거리
- Far Clipping Plane: 카메라에서 가장 먼 렌더링 가능한 거리
2.3 활용
- 최적화: 필요 없는 오브젝트를 렌더링하지 않도록 하여 성능 최적화
- 시네마틱 효과: 특정 FOV 값을 조절하여 화면 연출
3. Coroutine (코루틴)
3.1 개념
Coroutine은 Unity에서 특정 작업을 여러 프레임에 걸쳐 실행할 수 있도록 하는 기능입니다. 일정 시간 동안 실행을 멈추거나, 특정 조건이 충족될 때까지 대기할 수 있습니다.
3.2 사용법
IEnumerator ExampleCoroutine() {
yield return new WaitForSeconds(2);
Debug.Log("2초 후 실행됨");
}
- yield return new WaitForSeconds(x): x초 동안 실행을 일시 정지
- yield return null: 다음 프레임까지 실행 대기
3.3 동기 vs 비동기
방식 설명
동기(Synchronous) | 모든 작업이 순차적으로 실행됨 |
비동기(Asynchronous) | 다른 작업이 진행되는 동안 특정 작업이 대기 가능 |
코루틴은 기본적으로 동기 실행되지만 yield return을 사용하면 다음 프레임으로 실행을 넘길 수 있습니다. 코루틴은 함수가 진행하고 있다가 멈추고 새롭게 또 실행하고 진행하고 있다가 멈추고 다시 추가로 실행하고 이런식으로 내부적으로 흘러갑니다. 이러한 특징으로 비동기적으로 표현하여 사용할 수 있습니다.
약간 비동기적 동기라고 생각하시면 좋을 것 같습니다.
추가로 Unity는 단일 스레드를 사용합니다!
결론
Unity의 추가적인 개념인 TryGetComponent, 카메라 절두체, Coroutine을 정리하였습니다. 단일 스레드였다는 것을 오늘 알았네요 허허..
'Unity' 카테고리의 다른 글
[Unity] InvokeRepeating, Lighting 간단하게 알아보기 (0) | 2025.03.26 |
---|---|
[Unity] AnimationCurve 가이드 (0) | 2025.03.26 |
[Unity] 스카이박스, Rigidbody ForceMode, Raycast, Input System 공부하기 (0) | 2025.03.12 |
[Unity] 오브젝트 풀링, Animator, StringToHash, FindGameObjectWithTag, Physics.Raycast 및 Physics2D.Raycast (0) | 2025.02.27 |
[Unity] 프리팹, Intantiate, Scriptable Object, 비트 연산자와 레이어 마스크 & 태크, 쿼터니언과 벡터 회전... (0) | 2025.02.20 |