AI/Unity

유니티 공용 모듈(Common Module) 제작 및 연동 (실패 노트)

blacknabis 2026. 2. 9. 22:41

실패 !! : 작업중 공통 라이브러리에 대한 필요성을 많이 느껴서 Antigravity(Gemini 3Pro(high))를 사용하여 가이드를 생성해서 다시 안티그래비티에게 수행 명령을 내어보았다.. 내가 원하는건 깃에서 Common을 svn의 익스터널 처럼 사용하는 구조였는데 Pakcage를 제작해버렸다. 요청을 잘 못 한 내문제도 있지만 덕분에 패키지 제작에 대해 경험치 업!! 좋게 생각하자

유니티 공용 모듈(Common Module) 제작 및 연동 가이드 (새 프로젝트 기준)

이 가이드는 완전히 새로운 폴더에서 유니티 공용 모듈을 시작하고, 이를 현재(또는 다른) 유니티 프로젝트에 로컬 패키지로 연동하여 개발하는 전체 과정을 설명합니다.

1. 공용 모듈 프로젝트 생성 (로컬 폴더)

유니티 프로젝트와 상관없는, 코드를 관리할 새 폴더를 만듭니다.

  1. 폴더 생성: C:\Work (또는 원하는 곳)에 MyUnityCommon 폴더를 만듭니다.
  2. 내부 구조 생성: 폴더 안에 Runtime 폴더를 만듭니다.
    • (선택) 에디터 전용 기능을 넣을 거라면 Editor 폴더도 만듭니다.
    • 구조: 
    • MyUnityCommon/ ├── Runtime/ <-- 실제 게임 런타임 코드 (MonoBehaviour 모음) └── Editor/ <-- (옵션) 에디터 확장 코드
  3. 메타데이터 파일 (package.json) 생성:
    MyUnityCommon 폴더 바로 아래에 package.json 파일을 만들고 아래 내용을 복사해 넣으세요.
    {
      "name": "com.myname.common",
      "version": "0.0.1",
      "displayName": "My Common Library",
      "description": "My Shared Unity Module",
      "unity": "2021.3",
      "author": {
        "name": "User",
        "email": "user@example.com"
      }
    }
  4. 코드 추가:
    Runtime 폴더 안에 필요한 스크립트를 추가합니다. (예: SceneBase.cs, MonoSingleton.cs 등)
    • : 기존 프로젝트의 Assets/Scripts/Common에 있는 파일들을 이쪽으로 이동시키면 됩니다.

2. GitHub 저장소 생성 및 초기화

이 폴더를 Git으로 관리하여 버전을 기록하고 공유할 수 있게 합니다.

  1. GitHub 저장소 생성:
    • GitHub에서 unity-common-lib (이름 자유) 저장소를 생성합니다.
    • "Initialize this repository with:" 옵션은 모두 체크 해제하세요.
  2. Git 초기화 (터미널/Git Bash):
    MyUnityCommon 폴더에서 아래 명령어를 실행합니다.
  3. git init # .gitignore 생성 (유니티용 쓰레기 파일 무시) echo "/[Bb]uild/" >> .gitignore echo "/[Ll]ibrary/" >> .gitignore echo "/[Tt]emp/" >> .gitignore echo "/[Oo]bj/" >> .gitignore echo "*.csproj" >> .gitignore echo "*.sln" >> .gitignore git add . git commit -m "Initial commit" git branch -M main # 원격 저장소 연결 (본인 주소로 변경!) git remote add origin https://github.com/본인계정/unity-common-lib.git git push -u origin main

3. 유니티 프로젝트에 연결 (로컬 패키지)

이제 진행 중인 유니티 게임 프로젝트(CatSudoku)에서 이 모듈을 가져와서 사용하고 수정할 수 있게 설정합니다.

  1. 유니티 프로젝트 열기: CatSudoku 프로젝트를 엽니다. (만약 기존에 Assets/Scripts/Common 코드가 남아있다면 삭제해야 충돌이 안 납니다. 백업 필수!)
  2. 패키지 매니저 열기: 메뉴 Window -> Package Manager.
  3. 패키지 추가: 좌측 상단 + 버튼 -> "Add package from disk...".
  4. 파일 선택: 아까 만든 MyUnityCommon 폴더 안의 package.json을 선택합니다.

결과:

  • Packages 폴더 아래에 My Common Library가 생깁니다.
  • 이제 Using Common; 처럼 네임스페이스를 사용하여 코드를 작성할 수 있습니다.

4. 작업 워크플로우 (개발 및 수정)

이제 두 개의 저장소가 연결되었습니다.

  • 코드 수정: 유니티 에디터에서 Packages/My Common Library 아래의 스크립트를 열어서 수정하면, 실제로는 MyUnityCommon 폴더의 파일이 수정됩니다.
  • 게임 개발: 유니티 프로젝트(CatSudoku) 내의 게임 로직은 그대로 개발합니다.
  • 커밋 (중요):
    • 게임 로직 수정: CatSudoku 폴더에서 Git 커밋.
    • 공용 모듈 수정: MyUnityCommon 폴더에서 Git 커밋 및 푸시.
      이 방식을 사용하면, 나중에 새 게임 프로젝트를 만들 때도 똑같이 Add package from disk (또는 Git URL)로 공용 모듈을 바로 가져와서 쓸 수 있습니다.

 

위 내용이 담긴 MD파일을 안티그래비티 Playground에 입력 후 작업요청

MD를 참조해서 작어하고 싶다고 요청
이런... 경로를 지정을 안했더니 안티그리비티 하위에 만들려고한다. 폴더경로를 다시 알려준다

 

경로를 재지정하고 실행하니 해당폴더에 내용들이 생성됨.

 

이건 뭐하는명령어지?? gemini 도와줘!

 

Gemini 분석 결과

상세 동작 분석

  1. $dest 변수 선언: 작업할 경로를 C:\study\unity\Common으로 지정합니다. 이 폴더가 앞으로 만들 커스텀 패키지의 루트가 됩니다.
  2. New-Item ... Runtime: Unity 패키지는 보통 실제 게임 로직 코드를 Runtime 폴더에, 에디터 관련 코드를 Editor 폴더에 분리해서 담습니다. 이를 위해 Runtime 폴더를 생성합니다.
  3. Move-Item ... package.json: Unity 패키지 매니저가 이 폴더를 패키지로 인식하게 해주는 설정 파일(package.json)을 최상위 경로로 옮깁니다.
  4. Move-Item ... .asmdef: 컴파일 시간을 단축하고 의존성을 관리하기 위한 '어셈블리 정의 파일'을 코드가 위치할 Runtime 폴더 안으로 옮깁니다.
  5. Copy-Item: 현재 개발 중인 스도쿠 게임(sdokucat)의 공용 스크립트 폴더 내용을 통째로 가져와서, 새 패키지의 코드 폴더(Runtime)에 복사합니다.
Walkthrough를 보면 작업한 내용과 다음에 수동으로 할 내용을 안내해준다.

 

어?? 왜 패키지로 들어가있지...

 

이게 맞아???



실제 CommonTest의 패키지를 수정하면 Common의 내용이 수정된다.... 의도ㄴ치 않았는데 패키지 만드는 법도 배우고.. 질문할 때 잘 해야된다는걸 다시한번 뼈저리게 느낀다.

깃허브에는 업로드해놓고 다음프로젝트는 테스트삼아 패키지로 관리해서 진행해보자....

 

반응형