티스토리 뷰
유니티에서 IOS빌드하면 기본용량에서 다소 증가하기는하나 몇배가 증가되는 현상이 있는경우가 있다.
이럴 때는 확인해보자.
1. Target Platform 설정이 어떻게 되어있나?
armv6 , armv6 / armv7 , armv7
ARM아키텍쳐 버전인데 아주 오래된폰 아니면 armv7은 다 지원한다. 당연히 속도도 armv7이 더 빠르고.
armv6과 armv7을 동시에 지원하게되면 armv6용 묶음, armv7용 묶음이 각각 생겨서 용량이 크게 증가한다.
2. BuildConfiguration 은 어떻게 되어있나?
Debug빌드는 용량이크다. 디버깅을위한 추가 데이터들이 들어가기 때문이다.
당연하지만 Release 로 빌드하자.
3. 텍스처는?
이부분은 잘 모르지만.
압축포맷, 비트(16/32), 텍스쳐 maxsize(256/512) 등등에 따라 차이가 많이난다.
자세한건 아래 스크랩한 블로그를 참고하자.
---- 스크랩
[스크랩] http://neojsm.tistory.com/10
[원본] http://rnblues.blog.me/90151016867
1. 이미지 자체 최적화
png 등의 이미지를 import 하면 압축된 용량이 아닌 원래 용량으로 인입됨.
아이폰의 경우 pvrtc로 압축하여 용량 줄일 수 있음.
256 x 256 size 이미지 크기 비교
- RGBA 32bit : 256 kb
- RGBA 16bit : 128 kb
- RGBA Compressed PVRTC4 : 32 kb
- RGBA Compressed PVRTC2 : 16 kb
texture type 설정
- GUI/HUD 용도로 사용하는 이미지는 GUI로 설정 (이미지 품질이 가장 좋음)
- 그 외는 Texture 혹은 Advanced 선택
- Advanced는 Texture 설정에서 사용자가 옵션 선택 가능
- Advanced에서 "Generate Mip maps" 설정을 해제하면 용량을 줄일 수 있다.
(2D에선 불필요. 게임 화면과 카메라와의 거리를 가깝게 잡은 경우 화질 개선에도 도움이 됨)
이미지 비율 조정
- Unity3d에서는 한 변의 길이가 2의 배수인 정사각형으로 이미지를 사용하게 됨. (2, 4, 8, 16 …)
- 압축할 때 이를 2의 배수인 정사각형으로 늘려주므로 정사각형 안에 들어가도록 사용할 것.
- 9 x 9 이미지는 16 x 16 으로 늘어나게 됨.
- 툴을 통해 이미지 병합시 만약 8 x 16 처럼 비율이 맞지 않을 경우 동일하게 16 x 16으로 늘어나므로
8 x 8 두장 혹은 다른 이미지를 더 합쳐 16 x 16으로 만드는 것이 용량면에서는 좋음 (성능과 반비례)
- 실제 1024 x 1024 altas를 PVRTC4로 압축시 용량은 0.5 mb정도 (2048 x 2048 : 2mb)
2. 이미지 화질과의 상관관계
개별 이미지를 atlas로 합치는 것이 성능 면에서는 도움이 됨.
- but atlas size가 커질 경우 화질이 떨어질 수 있음. (정확한 원인은 파악 못함)
- 개인적인 관점에서 1024정도가 적당한 듯. (2048 이상일 경우 화질 저하 정도가 꽤 큼)
- 4096 사이즈의 경우는 iphone에서 이미지가 보이지 않음
- Edit / Graphic Emulation 설정을 No emulation으로 설정할 경우 보인다는 글이 있었으나 적용해도 보이지 않아 실패함.
3. 용량 & 성능
이미지를 import하고 이를 atlas로 병합하는 과정을 거칠 경우 원본 이미지가 프로젝트에 포함되어 있을 수 있음.
- 실제 build시 unity에서 사용하지 않는 이미지는 포함시키지 않게 되어 있으나
Asset 폴더 내에 Resource 폴더가 있을 경우 Resource 폴더 내의 모든 내용은 강제로 프로젝트에 포함됨. (동적 로딩용)
- 원본 이미지를 별도로 압축하지 않은 경우 앱 용량이 매우 커질 수 있음. =_=
iOS build 시 설정
- Target Device : iPhone / iPad보다 iPhone 혹은 iPad 단독으로 설정
- Target Platform : armv6 < armv7 < armv6 & 7
- Api Compatibility Level : .NET 2.0 Subset < .NET 2.0
- Stripping Level : Use micro mscorlib < Strip ByteCode < Strip Assemblies < Disabled
- Script Call Optimization : Fast but no Exceptions < Slow and Safe
'Development' 카테고리의 다른 글
[Jquery] layer 를 화면 중간에 띄우기 (0) | 2015.04.26 |
---|---|
[Cpp] dos command (0) | 2015.04.01 |
[SpringMybatis] multiple recordsets (DB의 여러결과셋 받기) (3) | 2015.02.09 |
[Java] String 의 특정 index의 문자열 교체 (0) | 2015.01.07 |
[Java] int to char (0) | 2015.01.07 |
- Total
- Today
- Yesterday