Unity 매뉴얼로 말하길
프로젝트가 커지고 스크립트 수가 증가할수록 스크립트 클래스 이름이 충돌할 가능성이 커집니다. 이것은 게임의 다른 파트를 따로 작업하고 궁극적으로 같은 프로젝트에 통합하는 경우에 적용됩니다. 예를 들어 한 명의 프로그래머가 메인 플레이어의 제어 코드를 만들고, 또 한사람이 적 캐릭터의 제어 코드를 작성했다고합니다. 둘 다 기본 스크립트 클래스를 Controller 라고 명명하고 프로젝트를 통합할 때 이름이 충돌합니다.
어느 일정 범위까지는 네이밍 규칙을 도입하거나 충돌할 때마다 이름을 변경하여 문제를 피할 수 있습니다 (예. 아까의 예라면 클래스는 PlayerController 및 EnemyController 라는 이름을 붙이기 등). 그러나 충돌하는 클래스가 여럿이거나, 변수가 그 이름으로 선언된 경우는 번거롭습니다. 각 클래스 이름의 사용 위치를 하나 하나 수정하지 않으면 컴파일 할 수 없습니다.
C# 언어에는 Namespace(네임 스페이스) 라는 기능을 제공하여 강력한 방법으로 이 문제를 해결할 수 있습니다. 네임 스페이스는 클래스 이름에 접두어로 사용되는 클래스의 집합입니다. 아래의 샘플에서 P 와 B 는 HelpClass 라는 네임 스페이스의 멤버입니다. 라고합니다.
사용방법
구현목표는 P클래스와 B클래스를 만들고 Help라는 클래스를만들어서 P와 B의 기능을 namespace를사용하여
Help구현하여 P,B클래스에서 사용하는것입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
namespace HelpClass
{
public class PlayerHelp : MonoBehaviour
{
public static void Help()
{
Debug.Log("플레이어 도와줘");
}
}
public class BossHelp : MonoBehaviour
{
public static void Help()
{
Debug.Log("보스 도와줘");
}
}
}
|
Class를 하나만들어서 namespace HelpClass라고 정의하였습니다. 또한 아래에는 PClass와 BClass를도와줄
2개의 클래스를 만들었습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HelpClass;
public class B : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
}
|
B Class를 하나 만들어서 4번째줄에 using HelpClass를 넣어줍니다. namespace를 가져왔습니다.
4번째 줄을 스킵할경우에는 11번째줄을 HelpClass.BossHelp.Help(); 이런식으로 수정하여 사용할수있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HelpClass;
public class P : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
}
|
P Class또한 똑같습니다.
NameSpace의 사용이유
만약 자신의 아들과 딸에게 장난감박스를 만들어줄려고할때 SonToyBox, DaughterToyBox라는 2개의 클래스를 선언할수있지만
ToyBox라는 Namespces를 생성후 Son, Daughter의 2개의 클래스를 아래에 선언해 이름의 혼용을 막을수있습니다.
'Unity(C#)' 카테고리의 다른 글
Unity(C#) Event (0) | 2020.04.21 |
---|---|
Unity(C#) delegate (0) | 2020.04.21 |
Inspector에 변수 재목정하기 (0) | 2020.03.05 |
Player 이동하기 (0) | 2019.11.05 |
CameraShake 만들기 (0) | 2019.11.05 |