파일 사이즈 줄이기

유니티는 모든 가져온 애셋들에 대해 후 처리 합니다

유니티는 항상 가져온 파일들에 대해 후 처리 합니다. 파일을 jpg 대신 다중 레이어 psd 파일 (multi-layered psd file)로 저장하는 것은 배치(deploy)할 플레이어의 크기에 아무런 차이를 주지 않을 것입니다. 파일들을 편의를 위해서 현재 작업하는 포맷(예: .mb 파일들, .psd 파일들, .tiff 파일들)으로 저장하십시오.

유니티는 사용 않는 애셋들을 추출 합니다

프로젝트 폴더내에 애셋들의 크기는 빌드된 플레이어의 크기에 영향을 주_지 않_습니다. 유니티는 게임에서 어떤 애셋들이 사용되는지 사용되지 않는지를 감지하는 데는 매우 영리합니다. 유니티는 게임을 빌드하고 게임에 포함될 필요가 있는 애셋들의 리스트를 생성하기 전에, 애셋들에 대한 모든 참조(reference)들을 지켜봅니다. 그러므로, 프로젝트 폴더내에서 사용되지 않는 애셋들을 유지 할 수 있습니다.

유니티는 사용된 파일 사이즈의 개요를 프린트합니다

유니티가 플레이어의 빌드를 마친 후에, 어떤 종류의 애셋이 가장 큰 파일 규모를 차지하고 있는지를 프린트하고, 빌드에서 포함된 애셋들을 프린트합니다.

Desktop!

열람을 위해서는: Console window (Window → Console)에 있는 Open Editor Log 버튼을 누르십시오.

iOS!

열람을 위해서는, 콘솔 로그를 여십시오: Help → Open Editor console log 메뉴.

Android!

< 열람을 위해서는, 에디터의 콘솔 로그를 여십시오: 콘솔 창에서 Open Editor Log 버튼 (Window → Console).

공간을 차지 하는 것에 대한 개요

질감 사이즈 최적화

질감들은 종종 빌드 시에 가장 많은 공간을 차지합니다. 첫 번째 해야 할 일은 압축 질감 포맷들 (DXT(Desktop platforms) 또는 PVRTC)을 가능하면 사용 하는 것입니다.

만약 사이즈가 줄어들지 않는다면, 질감들의 사이즈를 줄이도록 시도해 보십시오. 여기서의 트릭(trick)은 실제 소스 컨텐트를 변경할 필요가 없습니다. 단지 프로젝트 보기의 질감을 선택하고, 가져오기 설정들에서 Max Texture Size를 설정하십시오. 질감을 사용하는 오브젝트에 줌인(zoom in) 하는 것은 좋은 아이디어입니다. 그리고 Scene View에서 안 좋아 보이기 시작 할 때까지, 최대 질감 사이즈를 조정하십시오.


최대 질감 사이즈를 변경하는 것은 질감 애셋에 영향을 주지 않고, 게임의 해상도에만 영향을 줍니다

해당 질감이 얼마나 많은 메모리를 차지하는가?

Desktop!

압축메모리 압축
RGB Compressed DXT1 0.5 bpp (bytes/pixel)
RGBA Compressed DXT5 1 bpp
RGB 16bit 2 bpp
RGB 24bit 3 bpp
Alpha 8bit 1 bpp
RGBA 16bit 2 bpp
RGBA 32bit 4 bpp

iOS!

압축메모리 압축
RGB Compressed PVRTC 2 bits 0.25 bpp (bytes/pixel)
RGBA Compressed PVRTC 2 bits 0.25 bpp
RGB Compressed PVRTC 4 bits 0.5 bpp
RGBA Compressed PVRTC 4 bits 0.5 bpp
RGB 16bit 2 bpp
RGB 24bit 3 bpp
Alpha 8bit 1 bpp
RGBA 16bit 2 bpp
RGBA 32bit 4 bpp

Android!

압축메모리 압축
RGB Compressed DXT1 0.5 bpp (bytes/pixel)
RGBA Compressed DXT5 1 bpp
RGB Compressed ETC1 0.5 bpp
RGB Compressed PVRTC 2 bits 0.25 bpp (bytes/pixel)
RGBA Compressed PVRTC 2 bits 0.25 bpp
RGB Compressed PVRTC 4 bits 0.5 bpp
RGBA Compressed PVRTC 4 bits 0.5 bpp
RGB 16bit 2 bpp
RGB 24bit 3 bpp
Alpha 8bit 1 bpp
RGBA 16bit 2 bpp
RGBA 32bit 4 bpp

총 질감 사이즈를 알아내기 위해서는: 너비(width) * 높이(height) * bpp. 만약 Mipmaps 를 가지면, 33% 추가.

유니티는 디폴트로 가져오기 시에 모든 질감들을 압축합니다. 이는 Preferences에서 더 빠른 워크플로우(faster workflow)에서 끌 수 (turn off) 있습니다. 그러나, 게임을 빌드 할 시에는, 모든 아직 압축되지 않은 질감들이 압축될 것입니다.

메쉬와 애니메이션 사이즈 최적화 하기

Meshes과 가져오기한 애니메이션 클립들은 압축되어서 게임 파일에서 더 적은 공간을 차지하도록 할 수 있습니다. 압축은 메쉬 가져오기 설정들(Mesh Import Settings)에서 켜 질 수 있습니다.

메쉬와 애니메이션 압축은 양자화(quantization)를 사용합니다. 이는 더 작은 공간을 사용하지만, 압축은 부 정확성을 나타낼 수 있습니다. 어떤 레벨의 압축이 해당 모델들을 위해서 받아들여질지를 실험하십시오.

메쉬 압축은 오직 더 작은 데이터 파일들로 만들지만, 실행 시에는 더 작은 메모리를 사용하지 않는다는 점을 유념하십시오. 애니메이션 Keyframe reduction는 더 작은 데이터 파일들과, 실행시의 더 작은 메모리 사용을 만듭니다. 일반적으로, 키 프레임 줄이기는 항상 사용해야 합니다.

추가적으로, 게임 빌드와 실행 시의 메모리를 아끼기 위해서, 메쉬들 내에서 노멀들 또는/그리고 탄젠트들을 저장 않도록 선택할 수 있습니다. 이는 메쉬 가져오기 설정들의 드롭다운에서 Tangent Space Generation 을 설정해서 이루어 집니다. 경험에 기반해서:

  • 탄젠트들은 노멀 매핑들을 위해서 사용합니다. 노멀 매핑을 사용하지 않으면, 해당 메쉬들에서 탄젠트들을 저장할 필요가 아마 없을 것입니다.
  • 노멀들을 라이팅(lighting)을 위해 사용합니다. 몇몇 메쉬들에 실시간 라이팅을 사용하지 않으면, 노멀들을 해당 메쉬들에 아마도 저장할 필요가 없을 것입니다.

플레이어들 내에서 포함된 dll들을 줄이기

플레이어를 빌드할 때 (데스크톱, 안드로이드 또는 아이오에스(iOS)), System.dll이나 System.Xml.dll 파일에 의존 되지 않는 것이 중요합니다. 유니티는 플레이어들 설치 시에System.dll 파일이나 System.Xml.dll 를 포함하지 않습니다. 만약 xml이나 System.dll이 상주하는 몇몇 지네릭 컨테이너들(generic containers)의 사용을 원하면, 요구되는 dll들은 플레이어들에 포함 되야 함을 의미합니다. 이는 다운로드 사이즈에 1MB를 추가 시키는데, 플레이어들의 배포에 좋지 않고, 이를 방지해야 합니다. 만약 몇몇 xml 파일들의 파싱(parsing)이 필요하면 Mono.Xml.zip과 같은 더 작은 xml 라이브러리를 사용할 수 있습니다. 대부분의 지네릭 컨테이너들은 mscorlib에 포함되어 있지만, Stack<>과 몇몇은 System.dll에 포함되어 있습니다. 그러므로, 이를 방지해야 합니다.


보시다시피, 플레이어를 빌딩시에 유니티는 System.Xml.dll 과 System.dll을 포함합니다

유니티는 플레이어들의 배포에 다음과 같은 DLL들을 포함합니다: mscorlib.dll, Boo.Lang.dll, UnityScript.Lang.dll 그리고 UnityEngine.dll.

역링크