[면접대비] Unity(4)
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
Shader는 오브젝트를 화면에 어떻게 렌더링할지 GPU의 처리 방식을 정의하고, Material은 Shader를 사용하면서 색상, 텍스처 같은 파라미터 값을 설정하는 에셋입니다.
Mesh는 오브젝트의 형태를 구성하는 정점과 삼각형 등의 정보를 가지고, Shader가 이를 어떻게 렌더링할지 결정합니다. Material은 사용할 Shader와 그 Shader에 전달할 속성값을 관리합니다.
Draw Call은 CPU가 GPU에게 특정 오브젝트를 렌더링하도록 명령하는 호출입니다. 너무 많아지면 CPU와 GPU 간 렌더링 명령 처리 비용이 증가해 성능 저하가 발생할 수 있습니다.
여러 오브젝트의 렌더링 작업을 묶어서 처리해 Draw Call이나 렌더링 상태 변경 비용을 줄이는 최적화 기법입니다.
Static Batching은 움직이지 않는 오브젝트의 Mesh를 묶어 렌더링하는 방식이고, Dynamic Batching은 조건을 만족하는 작은 동적 Mesh들을 런타임에 묶어서 렌더링하는 방식입니다.
같은 Mesh와 Material을 사용하는 여러 오브젝트를 인스턴스별 Transform 등의 데이터만 다르게 전달해 적은 수의 Draw Call로 렌더링하는 기법입니다. 나무나 풀처럼 동일한 오브젝트가 많을 때 효과적입니다.
카메라 시야 안에 있더라도 다른 오브젝트에 완전히 가려져 보이지 않는 오브젝트의 렌더링을 생략하는 최적화 기법입니다.
카메라의 시야 영역인 View Frustum 밖에 있는 오브젝트를 렌더링하지 않는 기법입니다. 화면에 보일 가능성이 없는 오브젝트의 렌더링 비용을 줄입니다.
Level of Detail의 약자로, 카메라와의 거리에 따라 오브젝트의 Mesh 복잡도를 낮춰 렌더링 비용을 줄이는 최적화 기법입니다.
Universal Render Pipeline은 Unity가 제공하는 Scriptable Render Pipeline 중 하나로, 다양한 플랫폼에서 성능과 그래픽 품질의 균형을 맞추기 위한 범용 렌더링 파이프라인입니다.
Built-in은 Unity의 기존 렌더링 파이프라인이고, URP는 SRP 기반으로 렌더링 과정을 더 유연하게 구성하고 확장할 수 있습니다. URP는 특히 모바일부터 콘솔·PC까지 폭넓은 플랫폼을 대상으로 합니다.
렌더링 과정을 C# 스크립트로 구성하고 커스터마이징할 수 있도록 만든 렌더링 파이프라인 구조입니다
Overdraw는 같은 화면 픽셀이 여러 번 덧그려지는 현상입니다. 투명 UI나 파티클이 많이 겹치면 픽셀 처리량이 증가하고, 특히 GPU 성능과 메모리 대역폭이 제한적인 모바일에서 성능 문제가 될 수 있습니다.
런타임에서 문자열 생성, 컬렉션이나 배열 생성, Boxing 등으로 관리 힙에 할당이 반복되면 이후 GC가 발생할 수 있습니다
참조 타입 객체 등을 매 프레임 생성하면 관리 힙 할당이 반복되고 GC 부담이 증가할 수 있습니다. 따라서 반복적으로 필요한 객체는 재사용하거나 불필요한 할당을 줄이는 것이 좋습니다.
GetComponent는 컴포넌트를 검색하는 비용이 있기 때문에 매 프레임 반복적으로 호출할 필요가 없다면 Awake나 Start에서 한 번 찾아 참조를 캐싱해서 사용하는 것이 좋습니다.
Unity Profiler를 통해 CPU Usage, Rendering, Memory, Physics 등의 항목을 확인할 수 있습니다.
먼저 프레임 시간이 급증하거나 지속적으로 높은 구간을 찾고, Hierarchy나 Timeline을 통해 어떤 함수가 CPU 시간을 많이 사용하는지 확인합니다. 이후 해당 로직을 좁혀가며 원인을 분석합니다.
게임이 사용하는 메모리의 구성과 객체별 메모리 사용량을 분석하는 데 사용합니다. 메모리를 과도하게 사용하는 에셋이나 해제되지 않고 남아 있는 객체 등을 찾는 데 활용할 수 있습니다.
Resources 내부 에셋은 빌드에 포함되고 런타임에 문자열 경로로 로드하기 때문에 의존성이나 사용 여부를 관리하기 어렵습니다. 프로젝트가 커지면 메모리와 에셋 관리가 어려워져 Addressables 같은 방식을 고려할 수 있습니다.
Addressables는 에셋에 주소를 부여해 필요한 시점에 비동기로 로드하고 해제할 수 있도록 지원하는 Unity의 에셋 관리 시스템입니다. 로컬뿐 아니라 원격 콘텐츠 관리에도 활용할 수 있습니다.
큰 에셋을 동기적으로 로드하면 메인 스레드가 오랫동안 점유되어 화면이 멈추거나 프레임 드랍이 발생할 수 있습니다. 비동기 로딩을 사용하면 작업을 분산하면서 로딩 UI나 게임 진행을 유지할 수 있습니다.
Unity 면접 대비 입력, 카메라/이동/AI, 에셋/빌드
Unity 면접 대비 애니메이션, UI
Unity 면접 대비 물리 코루틴 / 시간처리 ScriptableObject / 데이터