스프라이트 패커 정리
스프라이트 그래픽작업을 위한 아틀라스 관리
기존의 아틀라스 관리 플러그인과는 개념이 다릅니다.
NGUI의 경우 아틀라스 메이커를 통해 다양한 스프라이트를 하나의 아틀라스에 넣어, 만들어진 아틀라스를 직접 관리 및 적용 했다면,
스프라이트 패커는 아틀라스를 만들긴 하는데 해당 아틀라스를 직접 관리 및 적용을 하진 못합니다.
즉 만들어진 아틀라스를 통해 관리하는 것이 아닌
해당 텍스처를 직접 관리 한 부분이 아틀라스에 적용되며, 이 적용된 아틀라스는 에디터 모드에서 작동하지 않고 플레이 모드에서 작동하게 됩니다.
(그래서 스프라이트 패커로 만들어도 에디터 모드의 Draw Call은 감소하지 않습니다. 플레이 버튼을 눌러야 감소한 Draw Call을 확인할 수 있습니다.)
약간 생소한 개념인데
Unity Docmentation을 참조하면
Atlases are cached in Project\Library\AtlasCache.
즉 아래의 이미지처럼 아틀라스를 만들어도 NGUI 처럼 Assets 안에 존재하지 않으며 에디터 상에서 파일을 확인할 수 없습니다.
하지만 AtlasCache 폴더안에 저장되기 때문에 실제로는 파일이 존재하게 되며, 유니티를 실행하게 되면 아틀라스를 쓰는 가장 큰 이유인
- 메모리 절약
- Drawo Call 감소
의 장점을 동일하게 사용할 수 있습니다.
아틀라스 만들기
선택한 텍스처의 Inspector창에서
Packing Tag에 Tag를 넣습니다.
이 Tag는 아틀라스의 이름역할을 합니다.
좌측 위의 Pack 버튼을 누르면 위에서 입력했던 같은 Tag 이름으로 묶인 아틀라스를 생성합니다.
단 해당 텍스처의 파일포멧에 따라 다른 그룹(같은 이름인데 그룹이 분리되는)이 생성되며 다른 그룹일 경우 Draw Call이 증가합니다.
만약 2048*2048의 해상도가 넘어가게 된다면 페이지(Page 1, Page 2 등)생성되며 생성된 페이지는 스프라이트 패커의 상단에서 선택할 수 있습니다.
(PC에서 테스트해본 결과 Page에 따른 DrawCall은 증가하지 않았습니다)
만들어진 아틀라스 사용?
이 부분에서 저도 많이 헷갈렸는데요;;
중요한 부분은
개발과 최적화가 분리되어 있다는 겁니다.
즉 개발은 Sprite로 변환시킨 텍스처를 드래그앤 드랍이나 코드를 통해 사용하고
이 Sprite를 단지 스프라이트 패커를 통해 Pack 만 시킨다면
유니티의 빽단에서 최적화 하는 방식입니다.
그냥 임포트한 Sprite를 사용하면 됩니다.
다만 메로리 및 Draw Call 최적화를 하기 위해 스프라이트 패커를 통해 아틀라스를 만들어야 하는 것이지요
아아... 에디터 상에서만 드로우콜 감소가 적용되지 않는 거였군요...
답글삭제하, 이거 때문에 한참 찾았네 ㅠㅠ
근데 리소스 폴더에 넣으면 안 된다는게 너무 타격이 크네요;
여기저기서 자주 보이네...요.ㅋ(최)
삭제