유니티가 어떤 방식으로 동작하는지 갑자기 궁금해져서 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) 방식 : 빌드 시간을 증가시키지만 타겟 플랫폼과의 호환성을 향상시키며 실행 시 미리 컴파일된 네이티브 코드를 사용하여 성능 및 메모리 효율을 향상시킵니다.
벡터의 내적과 외적 (0) | 2024.01.26 |
---|---|
벡터공간(Vector Space)과 어파인공간(Affine Space) (0) | 2024.01.19 |
쉐이더(Shader) 와 랜더링 파이프라인(Rendering Pipeline) (2) | 2024.01.18 |
[유니티 꿀팁] 유니티가 에디터랑 연결이 안 될때 해결방법 (0) | 2021.10.23 |
Unity FPS 표시 (0) | 2021.10.08 |