목차

반응형

https://www.youtube.com/watch?v=Kel7NIP2AOg

유니티 데브윅스에서 발표한 주제 "유니티 워크플로 속도 향상을 위한 기능 소개"에 대한 간략한 요약을 하겠다.

 

발표 개요

1. 플레이 모드

2. 애셋 임포트

3. 애셋 관리

4. 디바이스 프리뷰

5. 패치 빌드

6. 기타

 

 

 

 

 

 

 

발표 개요

유니티로 개발을 하다보면 유니티의 자체적인 이슈로 개발자의 시간을 잡아먹는 부분이(애셋 임포트, 자체적인 빌드 타임 등) 존재한다.

특히 그중에서도 빌드와 관련된 부분에 대하여 발표자님께서 대안에 대하여 말씀하셨다.

모든 문제에 대하여 완벽한 대안은 아니더라도 앞으로 계속해서 고쳐나갈 것이고 유니티 내부 개발진들도 사용자에게 더욱 편한 환경을 제공하기 위하여 장기적으로 개발을 염두에 두고 있다고 한다.

여러 가지 대안들 중에서도 크게 다섯 가지의 대안과 개선안을 발표해주셨다.

 

 

 

1. 플레이 모드

에디터에서 플레이를 누르면 걸리는 시간(현재 프로젝트의 크기에 따라 수초~수십 초)을 단축

 

사용 방법은 Project Settings > Enter Play Mode Settings > Enter Play Mode Options를 체크하면 된다.

Reload Domain과 Reload Scene에 대한 설명은 아래 있다.

 

(실제로 실행을누르자마자 바로 실행이 될 정도로 엄청난 체감효과를 자랑한다.)

 

원리

유니티 에디터단에서 게임을 실행하면 위와 같은 단계를 거치게 되는데 특정 단계 중 도메인 리로드, 씬 리로드 부분에서 상당수 시간을 차지한다.

도메인 리로드 : 스크립트 연관, 스크립트의 deserialization, serialization, 물리 디스크 File IO, 어셈블 로드

씬 리로드 : 씬의 오브젝트 연관, 에디팅 모드에서 씬의 게임 오브젝트를 바로 사용하는 것이 아니라 전부다 destroy 하고 다시 생성

 

위의 두 단계를 최대한 생략, 단축해버리는 것이다.

해당 기능에서 Reload Domain과 Reload Scene를 체크하게 되면 해당 부분을 스킵하지 않게 된다.

 

주의사항

해당 기능은 Experimental 단계라서 무결성을 보장하지 않는다. 다음과 같이 알려진 부작용도 가지고 있다.

 - HDRP에서 버그가 많음

 - 써드파티를 고려하고 제작된 기능이 아님 : 써드파티에서 무수한 오류를 맛보게 될 수 있음.

 - 스태틱 필드 리셋 안됨 : 게임을 시작할때마다 스태틱 필드가 초기화돼야 하지만 그렇지 아니함.

 

질문

Enter Play Mode 사용시 UGUI 가 제대로 업데이트가 안됩니다!

아직 실험단계라서 유니티에서 제공하는 모든 부분이 검증되지 않았습니다. 버그 제보 시 처리하도록 하겠습니다.

 

Domain Reload와 Scene Reload 체크시 기존과 차이가 없나요?

완전히 똑같게 됩니다.

 

프로토타입 단계, 소규모 프로젝트에서 정말 유용하게 사용 가능하다고 생각한다.

 

 

 

2. 애셋 임포트

에셋 임포트 하는 시간을 단축, 개선

 

설정 방법(유니티 2019.3 버전부터는 자동으로 Version2로 설정된다.)

Project Settings > Editor > Asset Pipeline > Version 2로 설정

 

사실 해당 설정에 대한 기본값이 최신 버전을 사용하는 사람이라면 Version 2로 되어있어서 이미 사용 중이라는 것을 눈치채지 못하고 있을 수 있다.(내가 그렇다)

기존 방식에서는 타겟 플랫폼을 스위칭하면 기존 캐싱이 전부 다 사라지는데 Version 2부터는 플랫폼마다 캐싱 데이터가 남아있어서 빠른 타겟 플랫폼의 스위칭이 가능하다.

 

원리

유니티 앤젠 내부에서 리팩토링을 많이 한 기능이라고 한다. 유니티 사용자는 크게 눈치채지 못할 수 있다.

애셋을 임포트하는 알고리즘 또한 개선하였다.

 

주의사항

해당 기능을 사용하게 되면 디스크 용량을 더 크게 사용할 수 있다. 그래서 에디터를 재시작하면 안 쓰는 데이터는 자동으로 삭제하도록 개발하였다.

 

개발자 코멘트

앞으로도 계속해서 발전시켜나갈 부분이며 두 가지 개발중인 기능이 있다.

Background import

말그대로 지금은 애셋을 임포팅 하면 유니티 포커스를 프리징 해서 작업을 못하도록 막는데 백그라운드에서 해당 작업이 진행되도록 개발 중

On-demand import

백그라운드 임포트와 찰떡궁합인 기능인데 임포팅 하는 리소스의 우선순위를 현재 유저가 작업하고 있는 부분에 맞춰서 임포팅하는 기능이다.

 

 

3. 애셋 관리

애셋의 물리적인 위치에 구애받지 않고 자체적인 애셋의 경로를 등록함으로써 코드상에서 보다 일관성 있고 쉽게 애셋에 액세스

 

기존 애셋 시스템에서는 아래와 같이 주어진 상황마다 애셋에 도달하기 위한 주소가 바뀐다.

 - 애셋을 서버에서 리모트로 받은 경우

 - 애셋이 리소스 폴더에 있는 경우

 - 애셋을 애셋 번들로 접근하는 경우

...

 

 

어드레서블 애셋 시스템을 사용하면 애셋에 자체적인 접근 주소를 부여하여 맥락과 관계없이 애셋에 접근이 가능하다.

 

에셋 프로파일

에셋 프로파일을 통하여 애셋에 대한 상황을 설정하여 테스트해 볼 수 있는 기능이 생겼다.

 

애셋 프로파일러

이미지는 없지만 애셋 프로파일러라는 기능도 소개해주었는데 특정 애셋별로 몇 번 사용했고 언제 사용됐는지 확인하는 기능(최적화)

 

 

 

 

 

4. 디바이스 프리뷰

디바이스 별로 어떻게 렌더링이 되는지 확인하는 기능(해상도 대응, 노치 확인)

 

 

 

실제 내 프로젝트에도 적용시켜봤다. 뒷목;;

개발자뿐만 아니라 디자이너들도 알면 좋은 기능이라고 생각한다.

 

사용 방법은 아래 블로그 글에 잘 나와있다.

https://skuld2000.tistory.com/79

 

[Unity] 유니티에 새로 추가되는 디바이스 시뮬레이터(Device Simulator) 소개

1. 유니티 디바이스 시뮬레이터 (Unity Device Simulator) 유니티 디바이스 시뮬레이터(Unity Device Simulator)는 유니티 에디터에서 개발중인 게임을 실행했을 때 Game 윈도우에서 실행되는 대신 Game XCode 나..

skuld2000.tistory.com

 

 

주의사항

CPU, GPU와 같이 성능적인 부분은 재현되지 않는다.

 

 

5. 패치 빌드

변경된 스크립트 부분만 업데이트 형태로 디바이스에 설치하며 빌드 시간을 단축시키는 기능

 

Scripts Only Build > Patch And Run을 하게 되면 프로젝트의 스크립트 중에서도 변경이 발생한 부분만 빌드하여 디바이스에 패치 형태로 빌드를 한다.

 

위와 같이 빌드 시간을 크게 단축할 수 있다.

 

주의사항

Scripts Only Build는 안드로이드만 지원한다. (망해라 ios ^^)

 

 

 

6. 기타

안드로이드 로그 캣을 유니티에서 지원한다.

 

이전에 Unity Remote라는 기능이 있었는데 해당 기능을 계승하는 Unity Live Link라는 기능을 개발하고 있다.

유니티 에디터에서 디바이스에 연결하여 디바이스에 구동 중인 프로젝트를 수정 

 

ㅋㅋㅋ 발표 중에 자꾸 오지현 님이 강사님 놀려서 개 웃겼다. ㅋㅋㅋㅋㅋㅋ

자꾸 놀려서 마지막에는 결국 관리계정이 그만하라고 했다 ㅋㅋㅋㅋ 개웃 ㅋㅋㅋㅋ

반응형