📚 개발 일지/Unity, CG

혼자 만들 땐 몰랐던 Unity 협업 실전 정리

jeongha.daisy 2025. 4. 19. 00:57
728x90
SMALL

유니티 팀 프로젝트를 하다 보면 코드 충돌, 에셋 꼬임, 구조 혼란이 자주 발생한다.
이 글에서는 유니티 협업을 원활하게 하기 위한 기본 폴더 구조와 코드/버전관리 팁을 정리했다.

 

1. 유니티 프로젝트 폴더 구조

  • Assets: 모든 자산이 저장되는 폴더
  • Library: 임포트된 에셋 캐시, 버전관리 제외
  • ProjectSettings: 프로젝트 설정, 버전관리 포함
  • Packages: 사용 중인 패키지 목록 및 종속성



2. 유니티 코드 구조 개요

2-1. 생명주기 메서드

    • Awake → OnEnable → Start → Update → FixedUpdate → LateUpdate → OnDisable → OnDestroy
    • Start()
      • 게임 오브젝트가 존재하기 시작할 때 호출된다(씬이 로드될 때 또는 게임 오브젝트가 인스턴스화될 때 호출).
    • Update()
      • 프레임마다 호출된다.
    • FixedUpdate
      • 물리 타임스텝마다 호출된다.
    • OnBecameVisible 및 OnBecameInvisible
      • 게임 오브젝트의 렌더러가 카메라의 뷰에 들어오거나 나갈 때 호출된다.
    • OnCollisionEnter 및 OnTriggerEnger
      • 물리 충돌 또는 트리거가 발생할 때 호출된다.
    • OnDestroy
      • 게임 오브젝트가 파괴될 때 호출된다.


2-2. 컴포넌트 조합 설계

    • 하나의 GameObject에 여러 MonoBehaviour 컴포넌트를 조합
    • 예를 들어 Player 게임오브젝트를 만들 때, PlayterMovement, PlayAttack, PlayerHealth 같은 스크립트를 각각 작성하여 붙이는 방식



2-3. 주요 디자인 패턴

  • 싱글톤 매니저 패턴
  • Observer 패턴 (이벤트 중심)
    • 이벤트를 이용하여 컴포넌트의 상태 변화가 필요한 다른 컴포넌트들에게 알림을 보내는 구조
    • 구독 해제를 확실히 한다.
  • Coroutine (비동기 및 시간 지연)
    • MonoBehaviour의 StartCoroutine으로 시작하는 특수한 함수 패턴
  • 프리팹/오브젝트 풀링 활용



3. 협업을 위한 폴더 구조

Assets/
├── Art/              # 그래픽 및 아트 에셋
│   ├── Models/       # 3D 모델 파일(.fbx 등)
│   ├── Textures/     # 텍스처 이미지
│   ├── Materials/    # 머티리얼(.mat)
│   ├── Animations/   # 애니메이션 클립 및 컨트롤러
│   └── Shaders/      # 셰이더 파일
├── Audio/            # 오디오 에셋
│   ├── Music/        # 배경 음악
│   └── SFX/          # 효과음 (Sound Effects)
├── Prefabs/          # 프리팹 에셋 (재사용 가능한 오브젝트 템플릿)
├── Scenes/           # 씬 파일(.unity) 모음
├── Scripts/          # C# 스크립트 코드
│   ├── Characters/   # 캐릭터 관련 스크립트
│   ├── UI/           # UI 관련 스크립트
│   ├── ... (기타 분류) ...
│   └── Managers/     # 게임 매니저/싱글톤 스크립트 등
├── UI/               # UI 에셋 (예: Sprites, UI Prefabs)
│   └── Sprites/      # UI에 쓰이는 스프라이트 이미지
├── Plugins/          # 외부 플러그인 또는 에셋 스토어 패키지 (Third-Party)
└── **...기타 필요한 폴더들...**



4. 네이밍 컨벤션

  • PascalCase: 클래스, 폴더, 파일명, 메서드 등
  • camelCase: 변수명
  • UI 오브젝트는 접두어로 UI를 붙인다.



5. 코드 계층 설계 팁

  • 기능별 폴더 구조
    • Core/Game/UI/Plugin 등 기능별 분리
  • 코드 계층 구조
    • MVC, MVVM 같은 소프트웨어 아키텍처를 적용 or 게임 시스템별 분리(예: 게임플레이 vs UI vs 네트워크) 등을 고려
  • 씬/프리팹 조직화
    • 씬을 분리하고 프리팹화한다.
    • Additive Scene Load


6. Git 버전 관리 팁

 

 

위 내용은 유니티 팀 프로젝트 시작 전에 정리해두면 큰 도움이 되는 기본 협업 가이드다.  
실제 팀 구성 전에 Notion이나 Git 레포지토리 README에 이 내용을 기반으로 정리해두면 충돌을 크게 줄일 수 있다.

728x90
LIST