grep

Engineering

Unity 의존성을 통한 에셋 관리로 생산성 향상

NHN

2021년 1월 8일

원문에서 보기 ↗

에셋 관리의 필요성

유니티에서 작업할 때 어떤 에셋이 있고 에셋이 어디에 있는지 찾고 수정하는 과정이 수없이 발생합니다.

스크립트, 텍스쳐, 모델링 등 주 작업 후 에셋에 대한 작업이 이루어지는데 기존에 어떤 에셋을 사용하는지 에셋이 어디에 있는지 더 나아가서 에셋 내부 하이라키 어디에 붙어있는지 찾는 시간이 많이 소요됩니다.

이러한 과정 중 누락되는 경우 버그가 발생할 수도 있어 확인도 필요합니다. 이는 전부 에셋관리 비용이며 에셋이 많아질수록 커집니다. 히스토리를 잘 알고 있는 경력자, 담당자일수록 이러한 과정이 축약되어 효율이 높아지는 이유입니다.

기존의 에셋 관리

이러한 에셋 관리 비용을 줄이기 위해 에셋 이름과 종류별로 폴더로 잘 구분합니다. ItemSlot이라는 스크립트가 있으면 연결된 프리팹도 ItemSlot과 같이 이름을 동일 또는 유사하게 만들고 폴더를 잘 구분해 넣고 폴더를 따라서 찾아가거나 이름으로 검색하는 방식을 사용합니다. 그러나 이러한 방식은 에셋이 많아지면서 점점 찾기 힘들어집니다.

의존성을 통한 에셋 관리

이러한 문제는 의존성을 통한 에셋 관리를 통해 개선할 수 있습니다. 모든 에셋은 의존성을 가지고 있습니다.

프리팹 등 상위 에셋에서 연결된 스크립트, 모델링 등의 guid를 가지고 있어 사용 시 로드합니다. 이러한 정보를 이용해서 연결된 에셋을 알 수 있습니다. 이는 유니티 메뉴의 Select Dependenys를 통해 확인할 수 있습니다.

하지만 이 경우 프리팹같은 상위 에셋에서 하위 에셋만 찾을 수 있습니다. 위에서 예시로든 ItemSlot 스크립트가 있다고 했을 때 ItemSlot을 사용하는 프리팹을 알 수 없습니다. ItemSlot을 수정해도 상위 프리팹을 찾아야 하는 에셋관리 이슈는 여전합니다.

Assetmanagement를 통한 에셋 관리

이러한 에셋관리 방법에 대해 소개하고자 합니다. Assetmanagement라는 에셋이 있습니다. 무료 이고 쉽게 받을 수 있습니다. 설치법

Assetmanagement를 사용했을 때 그래프로 에셋의 관계를 직관적으로 보여줍니다. 처음 보는 에셋이라도 관계를 직관적으로 파악하여 쉽게 관리할 수 있습니다. 이는 분석 및 인수인계 등의 시간을 줄여줍니다.

직관적인 에셋 의존성

사용하는 에셋과 사용되는 에셋을 한 번에 알 수 있습니다. 하위나 상위 에셋이 수정되더라도 찾는 비용이 사라집니다.

예를 들어 ItemSlot 스크립트에 새로운 속성을 추가했습니다.

public class ItemSlot : MonoBehaviour
{
    // Add Code
    public GameObject AdditiveObject;

    ...
}

이때 어느 폴더에 있든 ItemSlot 스크립트에 붙어있는 에셋을 알 수 있습니다. 레퍼런스 검색을 통해 더 나아가서 어떤 게임오브젝트에 붙었나 파악하고 수정할 수 있습니다. 기존 방식처럼 에셋을 찾아다니는 비용이 사라집니다. 1.png

쉬운 에셋 교체

폰트나 스프라이트같이 컴포넌트 내에 속성으로 포함된 경우도 찾을 수 있습니다. 에셋 내부 어디에 연결돼있나 찾아야 하므로 기존방식으로는 더욱 비용이 큽니다. 이도 역시 레퍼런스 검색을 통해 어느 속성에 연결돼있나 확인 가능하며 교체도 쉽게 가능합니다. 2.gif

안전한 에셋 관리

의존성이 존재하지 않는다면 연결된 에셋이 없기 때문에 안전한 삭제도 가능합니다. 또한 잘못된 삭제로 missing과 같은 이슈가 발생할때도 쉽게 알수 있습니다.

더 자세한 정보는 가이드에서 확인할 수 있습니다.

마무리

이처럼 에셋메니지먼트를 사용하여 생산성을 향상할 수 있습니다. 의존성을 활용하여 다운로드, 빌드 사이즈 메모리 등을 최적화할 수 있습니다.

사용을 권장합니다. 낭비하는 시간을 없애고 주 작업에 집중하세요! 좋은 추가 기능 및 아이디어가 있다면 아래 메일로 아이디어 부탁드립니다. dl_gpm_help@nhn.com

설치법

설치법은 다음과 같습니다.

  1. 에셋스토어에서 GamePackageManager를 설치합니다.
  2. 메뉴의 Tools/GPM/Manager를 선택후 AssetManagement를 설치합니다. 3.gif

AssetManagement외에도 GamePackageManager에는 게임 내에서 웹페이지를 열어볼 수 있는 Webview, 디버깅 연결 없이도 게임 내에서 로그를 볼 수 있는 Logviewr 와 같은 사용 시 도움이 되는 다양한 에셋들도 있습니다.

감사합니다.