Version: Unity 6.0 (6000.0)
언어 : 한국어
스크립트 생성
스크립트 점검

이름 지정 스크립트

스크립트 파일의 이름과 그 안에 선언된 클래스를 신중하게 선택해야 합니다. 적절한 파일 이름을 사용하고 네임스페이스 아래에 클래스를 정리하면 컴파일러가 오류 없이 클래스를 식별할 수 있습니다.

스크립트 파일 이름

스크립트를 생성할 때 입력하는 파일 이름은 그 안에 정의된 클래스의 이름에도 사용됩니다. 스크립트의 파일 이름을 그 안에 정의된 클래스의 이름과 일치시키는 것이 좋습니다.

빌트인 Unity 유형 MonoBehaviourScriptableObject에서 파생된 스크립트의 경우 파일 이름이 일치하지 않더라도 Unity는 스크립트에 정의된 클래스 유형을 확인할 수 있지만, 다음과 같은 제한 사항이 있습니다.

  • 스크립트에 여러 클래스가 정의된 경우 Unity는 파일과 동일한 이름의 클래스를 선택합니다.
  • C# partial 키워드를 사용하여 여러 파일에 걸쳐 하나의 MonoBehaviour 파생 클래스를 정의하는 경우 partial 클래스와 동일한 이름의 파일만 컴포넌트로 사용할 수 있습니다.

참고: 클래스 이름이 특정 파일과 명확하게 일치하지 않는 경우 Unity는 경고를 표시합니다.

클래스 이름 및 네임스페이스

이름 지정 충돌은 프로젝트의 다른 부분에서 동일한 이름을 가진 여러 클래스를 선언할 때 발생합니다. 이름 지정 충돌의 가능성은 프로젝트의 규모와 기여자 수에 따라 증가합니다. 예를 들어 한 개발자는 메인 플레이어 캐릭터를 제어하는 코드를 작성하는 반면, 다른 개발자는 적 캐릭터에 동등한 코드를 작성할 수 있습니다. 두 개발자가 메인 클래스 Controller를 호출하도록 선택하면 컴파일러는 코드에서 Controller 사용이 어떤 클래스를 참조하는지 확인할 수 없게 됩니다.

클래스 이름 충돌을 방지하기 위해서는 C# 프로그래밍에서 네임스페이스의 클래스를 정리하는 것이 좋습니다. 네임스페이스는 클래스의 컬렉션이며, 클래스 이름에 접두사가 붙은 네임스페이스는 클래스를 참조하는 완전하고 명확한 방법을 제공합니다. 자세한 내용은 Microsoft의 네임스페이스 기술 자료를 참조하십시오.

아래 예시에서 클래스 Controller1Controller2Enemy라는 네임스페이스의 멤버입니다.

namespace Enemy {
    public class Controller1 : MonoBehaviour {
        ...
    }
    
    public class Controller2 : MonoBehaviour {
        ...
    }
}

전체 이름을 사용하여 이러한 클래스를 코드에서 명확하게 참조할 수 있습니다. 전체 이름은 네임스페이스와 클래스 이름이며, 이 경우 각각 Enemy.Controller1Enemy.Controller2입니다. 기존 클래스 선언 주변에 네임스페이스 선언을 추가할 수 있으므로 모든 클래스의 이름을 개별적으로 변경할 필요가 없습니다. 이러한 클래스가 다른 소스 파일에 있더라도 클래스가 있는 위치 주변에 네임스페이스 선언을 추가할 수 있습니다.

파일 상단에 using 지시문을 추가하면 네임스페이스 접두사를 반복해서 입력하지 않아도 됩니다.

using Enemy;

이렇게 하면 컴파일러가 이 파일에서 Controller1Controller2에 대한 레퍼런스를 각각 Enemy.Controller1Enemy.Controller2로 확인합니다. 스크립트에서 다른 네임스페이스(예: Player)에서 동일한 이름의 클래스를 참조해야 하는 경우 네임스페이스 접두사를 지정해야 합니다. 충돌하는 클래스 이름이 포함된 네임스페이스 2개가 같은 파일에 있는 using 지시문과 함께 임포트되면 컴파일러가 오류를 보고합니다.

여러 네임스페이스에 대한 제한 사항

네임스페이스 및 MonoBehaviour 또는 ScriptableObject 클래스와 관련된 특정 제한 사항이 있습니다. 파일에 MonoBehaviour 또는 ScriptableObject 클래스에 대한 정의가 포함된 경우 해당 파일 내에서 여러 네임스페이스를 사용할 수 없습니다.

Unity는 콘솔에 다음과 같은 경고를 표시합니다.

Class MyClass can not exist in multiple namespaces in the same file, even if one is excluded with preprocessor directives. Please move these to separate files if this is the case.

한 네임스페이스에는 MonoBehaviour를 정의하는 파일이 있고 같은 파일 내 다른 네임스페이스에는 다른 클래스가 있는 경우, Unity는 MonoBehaviour 클래스를 인식하지 못하고 게임 오브젝트에서 사용할 수 없습니다. 이 제한은 임포트 및 컴파일 속도를 높이기 위해 Unity 2020.1에 도입되었기 때문에 제한이 도입되기 전에 작성된 일부 예전 에셋 스토어 패키지는 잘못 작동할 수 있습니다. 이 문제와 관련된 문제를 수정하려면 각 네임스페이스의 클래스에 대한 코드를 분리하여 파일을 분리하십시오.

추가 리소스

스크립트 생성
스크립트 점검
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961