[Unity] Unity/C# 코드 컨벤션 및 프로젝트 컨벤션

Date:     Updated:

카테고리:

태그:

코드 스타일 컨벤션

기본적인 C# 코드 스타일 컨벤션은 다음 문서를 따른다.

👉👉👉 C# 코드 스타일 컨벤션

UI 클래스 명명의 경우, UI가 이미 줄인말이기 때문에 클래스 이름의 가독성이 떨어질 수 있다. UI 클래스의 경우에는 다음과 같이 클래스명 앞에 UI_를 붙이도록 한다.

public class UI_Base
{

}
public class UI_Popup : UI_Base
{

}
public class UI_Dialog : UI_Popup
{

}

다른사람의 코드를 수정시에는 다음과 같이 주석을 남긴다. 해당 코드를 머지한 후에는 확인 후 주석을 삭제하도록 한다.

public class SomeClass
{
	//20250123 작성자이름 추가
	//추가 내용
	public void AddedCode()
	{
	
	}

	//20250123 작성자이름 수정
	//수정 내용
	public void ModifiedCode()
	{
	
	}

	//20250123 작성자이름 삭제
	//삭제 내용
	//public void RemovedCode()
	//{
	//
	//}
}

UI를 제작할 때, 하이어라키에 생기는 자식 클래스는 다음의 형식을 따른다. 또한, 해당 오브젝트에 붙는 클래스명도 똑같이 선언한다. 아래의 네이밍 규칙을 지킬 수 없을때는 예외를 적용하여 알아보기 쉬운 이름을 선언한다.

// 해당 오브젝트의 부모 + 해당 오브젝트 형식 + 해당 오브젝트의 역할
- UI_YesNoDialog
  - UI_YesNoDialog_Button_Background
  - UI_YesNoDialog_Text_ConfirmButton
public class UI_YesNoDialog{}
public class UI_YesNoDialog_Button_Background{}
public class UI_YesNoDialog_Text_ConfirmButton{}

오브젝트를 명명할때에는 다음과 같은 네이밍 규칙을 사용한다.

  • Prefab인 경우 : P_SomePrefab
  • Prefab이 UI인 경우 : UI_SomeUIPrefab
  • Sprite인 경우 : S_SomeSprite
  • Bgm인 경우 : BGM_SomeBgm
  • SFX인 경우 : SFX_SomeSfx
  • Material인 경우 : M_SomeMaterial

Addressable Asset에 등록할 경우 네이밍은 다음과 같은 규칙을 따른다.

  • 오브젝트인 경우 : 경로를 제외한 프리팹 본연의 이름
  • 스프라이트인 경우 : 경로를 제외한 스프라이트 본연의 이름 + .sprite

프로젝트 전반에서 사용할 공용 메서드일 경우 팀원과 상의 후, 따로 클래스를 만들어 분리하도록 한다.

프로젝트 전반에서 사용할 상수들은 Define클래스에 정의하도록 한다. 또한, 프로젝트 전반에서 사용하는 enum타입들도 Define클래스에 정의하도록 한다.

public class Define
{
	public static readonly string SERVER_URL = "localhost:5050";
}
public enum Prefabs
{
	P_AudioPlayer,
}

서버와 통신을 할때에는 Dto를 사용하도록 한다.

public class UserModel
{
	public long Id {get;set;}
	public string Name {get;set;}
	public string Email {get;set;}
	public string Password {get;set;}
	public string PersonalNumber{get;set;}//주민번호
}
public class UserJoinDto
{
	public string Name {get;set;}
	public string Email {get;set;}
	public string Password {get;set;}
}

테스트를 위한 클래스는 개발자 각자의 테스트 씬을 만들어서 사용한다.

// Scene 이름 - Test_UI_Dong
public class Test_UI_Dong
{
	//Test 내용
}

유니티 프로젝트 컨벤션

개발자가 직접 생성한 폴더는 최상위 경로명 앞에 @를 붙여 명명한다. 단, Plugins 또는 Resources처럼 예약 폴더에는 예외를 적용한다.

Scripts 폴더에 대해서는 일반적인 C# 프로젝트과는 달리 ClassLibrary를 생성하지 않고, 폴더로 라이브러리를 나누도록 한다.

Scene들은 프로젝트 스토리보드의 흐름에 따라 이름 앞에 01.와 같이 번호를 메겨 가독성을 높인다.

Unity 카테고리 내 다른 글 보러가기

댓글 남기기