[Unity] Hierarchy & Aseets & ETC Management

녹차·2024년 4월 23일

Unity

목록 보기
3/8
post-thumbnail

Introduction

소규모(대략 5~6명)으로 여러 번 협업을 하면서 구조에 대해 많은 고민했습니다. 정답은 아닐지라도 "그 당시 최선"이라는 생각으로 본 글을 작성하였습니다.

Hierarchy & Aseets Management란?

Hierarchy & Aseets Management란 제 경험을 바탕으로 프로젝트를 진행하면서 Hierarchy와 Aseets을 어떻게 관리하는지 제 방식을 보여드리겠습니다.

Hierarchy & Aseets Management 필요한 이유

팀 프로젝트의 경우 여러 프로그래머/기획자가 엔진을 사용하여 작업하기에 불필요한 코멘트를 줄일 수 있고, 프로젝트를 원활하게 진행할 수 있습니다.

Body

Hierarchy

Hierarchy의 경우 오브젝트, 카메라, Manager 등등 구분하여 "-------------------" 을 만들어 다른 사람이 어떤 구조인지 빠르게 알 수 있도록 만들어주었습니다.

Assets

Name 앞에 번호를 만들어 내가 원하는 파일을 빠르게 찾을 수도록 만들었습니다. 다른 프로그매들은 앞에 번호를 안붙이는 파싱 때문에 안붙이는 경우도 있는데 저의 경우 불편해서 붙여서 사용합니다. 이를 타입 기반 구조(Type-First)라고 합니다.

타입 기반 방식이 아닌 게임 기능/시스템 단위로 묶는 방식을 Feature-First라고 합니다.

Assets -> Script/Image/ETC

파일 내에서도 필요 용도에 맞게 Script, Image 등등 구분하여 분류했습니다.

Plugins

그래픽 에셋이 아닌 개발 에셋의 경우 Plugins File을 만들어 따로 관리합니다. 저 같은 경우 Odin이랑 DoTween을 즐겨 쓰기에 넣어두었습니다.

ETC

Script Templates in Version

해당 버전의 스크립트 템플릿을 바꿔서 사용합니다.

Q1. 해당 버전의 스크립트 템플릿을 바꾼다는 소리가 뭐죠?

보통 스크립트를 생성하면 아래와 같이 생성이 됩니다.

using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}

Unity Verson -> Editor -> Data -> Resources -> ScriptTemplates에서 스크립트 템플릿을 본인 취향에 맞게 바꾸면 아래와 코드와 같이 바꿀 수 있습니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 작성일자 : #DATE#
// 작성자 : 

/// <summary>
/// 코드에 대한 설명
/// </summary>
public class Test : MonoBehaviour
{
    void Start()
    {
        
    }

    void Update()
    {
        
    }
}

Script Templates in Project

또한 verson이 아닌 project 내에서 스크립트 템플릿을 이용하는 방법 또한 있습니다.

  1. 위와 같이 Asset Folder에 ScirptTemplates을 만듭니다.

  2. txt파일로 3-Scripting__{}-{}.cs을 만들어 ScirptTemplates 내에 넣습니다.

    중요Point : 이때 앞에 3은 마우스를 Creat -> Scripting에 갖다댈 때 정상적으로 Menu에 올라올도록 합니다.

  3. 해당 Txt 파일을 Template에 맞게 작성합니다.

using EnumNamespace;
using UnityEngine;

//작성 날짜 : 
//작성자 :

/// <summary>
/// 코드에 대한 설명
/// </summary>
public class #SCRIPTNAME# : UIView
{
    void OnEnable()
    {
        //#해당 View를 UIManager에 등록
    }

    protected override void Start () 
    {
    	 base.Start();
    }

    public override void EnterUI()
    {
    }

    public override void ExitUI()
    {
    }
}

Conclusion

되게 사소해 보일 수 있지만, 저는 중간에 프로그래머가 참여할 경우를 생각해 신경써서 작업을 합니다.

추가로 에셋을 써서 Hierarchy & Aseets을 깔끔하게 정리하는 방법인데 좋은 방법론이라 생각합니다.

profile
CK23 Game programmer

0개의 댓글