상세 컨텐츠

본문 제목

유니티 아키텍쳐

Tech/Unity 유니티

by 2024. 1. 18. 18:50

본문

유니티가 어떤 방식으로 동작하는지 갑자기 궁금해져서 chatGPT와 장시간의 대화를 통해 정리해보았다. 유니티 독스도 참고했다!



1. Unity 엔진:
    - Unity 엔진은 내부적으로 네이티브 C/C++로 빌드되었지만, 상호작용하는 데 사용하는 C# 래퍼를 포함하고 있습니다.

2. Unity 프로젝트 빌드:
    - 빌드 프로세스는 C# 코드를 CIL(Common Intermediate Language)이라는 .NET 바이트코드 포맷으로 컴파일합니다. Unity는 이러한 CIL 바이트코드를 어셈블리라고 부르는 파일로 패키징합니다.

 

3. 코드 스트리핑 - Unity Linker:
    - Unity Linker는 프로젝트의 모든 어셈블리를 분석하여 필요 코드를 마킹하고 마킹되지 않은 잔류 코드를 어셈블리에서 삭제하여 빌드할 어플리케이션의 크기를 크게 줄여줍니다.

 

4. Scripting Backend - Mono:
    - Mono 런타임은 JIT(Just-In-Time) 방식으로 실행 시점에 CIL 코드를 해석하고 실행합니다. 빠른 시작이 가능합니다. 

5. Scripting Backend - IL2CPP:
    - IL2CPP 백엔드는 으로 CI모든 관리되는 어셈블리를 표준 C++ 코드로 전환합니다.

    - C++ 컴파일러는 생성된 C++코드와 IL2CPP의 런타임 부분을 네이티브 플랫폼 컴파일러로 컴파일합니다.

    - Unity는 대상 플랫폼에 따라 실행가능한 파일이나 DLL을 생성합니다.

    - AOT(Ahead-Of-Time) 방식 : 빌드 시간을 증가시키지만 타겟 플랫폼과의 호환성을 향상시키며 실행 시 미리 컴파일된 네이티브 코드를 사용하여 성능 및 메모리 효율을 향상시킵니다.

관련글 더보기