Unity UPM으로 공통 모듈 라이브러리 만들기
오브젝트풀 또 만들어야 돼?
게임 아이디어가 떠올랐을 때 그 게임의 재미를 검증하는 방법은 핵심 게임 기능만을 담은 빠른 프로토타입 개발이다. 새로운 프로젝트를 만들어 개발을 시작할 때마다 기존에 사용하던 프로젝트에서 구현했던 유틸리티 클래스들이 다시 필요할 때가 항상 온다.
필요한 해당 코드들을 일일이 Ctrl+C, V 하는 아날로그 방식보다는 공통으로 사용되는 이런 보일러플레이트 코드들은 요즘은 AI로 딸깍하고 만들 수 있다. 하지만 조금 더 개발자 본인의 스타일이나 다용성에 맞게 한번 만들어 놓고 재사용하는 방법이 개발자 개인의 생산성 측면에서 유용하지 않나 싶어 알아본 방법으로 Unity Custom Package로 공통 모듈 라이브러리를 만드려고 한다.

Unity Package Manager 이점
사실 *.unitypackage 파일로 저장되는 레거시 유니티 표준 패키지 방식이었던 AssetPackage를 사용해서 Import/Export를 해도 되겠지만 프로젝트의 Asset 폴더에 기존 패키지의 경로와 똑같은 경로에 추가되므로 덮어쓰기 문제라거나 공통 모듈을 사용하는 각 프로젝트에 별도의 파일이 존재하는 방식으로 내가 공통 모듈을 업데이트 한다고 해도 사용중인 모든 프로젝트에 적용이 되지않는 불편함이 존재한다.
UPM으로 만든 커스텀 패키지 파일은 Git 원격 저장소로 관리해서 불러오기도 편하고 개인으로 사용할 때 disk에서 불러와서 사용이 가능하다. 더불어 커스텀 패키지 내의 package.json이라는 패키지 정보를 담은 파일에서 버전 관리나 의존성 관리를 해주기 때문에 업데이트에도 용이하다.

How?

Create package로 패키지를 생성하면 상단 이미지의 레이아웃대로 폴더가 생성 된다. 아래 항목은 레이아웃 중에서 필수로 있어야 하는 폴더와 파일이다.
* package.json - 패키지 메타데이터 및 설정
* Runtime/Editor 폴더 - 실제 게임 빌드에 포함되는 코드/에셋과
* .asmdef 파일 - 런타임/에디터 어셈블리 정의
이 외 나머지는 다른 사용자의 이해를 위해 패키지의 문서나 예제 씬이나 코드를 넣는 폴더 등이 있다.
우리가 할 일은 package.json에서 package의 이름과 버전을 설정하고 개발에 필요한 모듈들을 Runtime 폴더, 개발에 유용한 에디터 코드들은 Editor 폴더에 추가하기만 하면 된다.

이제 사용할 프로젝트에서 Git 저장소나 disk에서 불러오기만 하면
