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 버전 관리 팁
- 포함: Assets, ProjectSettings, Packages
- 제외: Library, Temp, Logs, UserSettings
- 작업 분담을 명확히 하여 한 작업 단위(예: 한 씬, 한 프리팹)는 가급적 한 사람이 맡도록 조율한다. 혹은 UnityYAMLMerge 툴 사용한다.
- 커밋 메시지 명확히하기
- .meta 파일 포함 필수
- .meta까지 따라 옮겨지도록 에디터 내부에서 파일 이동하기
- 출처: https://docs.unity3d.com/530/Documentation/Manual/BehindtheScenes.html#:~:text=The ID that Unity assigns,asset file it relates to
위 내용은 유니티 팀 프로젝트 시작 전에 정리해두면 큰 도움이 되는 기본 협업 가이드다.
실제 팀 구성 전에 Notion이나 Git 레포지토리 README에 이 내용을 기반으로 정리해두면 충돌을 크게 줄일 수 있다.
728x90
LIST
'📚 개발 일지 > Unity, CG' 카테고리의 다른 글
[Unity] 지진 구현하기, Perlin Noise (1) | 2025.05.21 |
---|---|
[컴퓨터그래픽스] 3D 모델을 현실감있게 하는 방법 2, 베이스맵 (0) | 2025.04.29 |
[컴퓨터그래픽스] 3D 모델을 현실감있게 하는 방법 1, 노멀맵이란? (0) | 2025.04.29 |
[디자인 패턴] Unity 싱글톤 패턴 완전 정리: 전역 인스턴스를 하나만 만들고 관리하는 법 (0) | 2025.04.19 |
[디자인 패턴] 유니티 상태 패턴 쉽게 이해하기: 상황에 따라 다른 행동을 하게 만들기 (0) | 2025.04.19 |