Version: Unity 6.0 (6000.0)
언어 : 한국어
이름 지정 스크립트
환경 및 툴

스크립트 점검

프로젝트 창에서 스크립트 에셋을 선택하면 인스펙터에 해당 스크립트 에셋에 속하는 어셈블리 이름과 콘텐츠 미리 보기를 비롯한 몇 가지 기본 정보가 표시됩니다.

참고: 인스펙터는 스크립트의 콘텐츠를 표시하지만 인스펙터 창에서 콘텐츠를 편집할 수 없습니다.

예시 스크립트를 표시하는 스크립트 인스펙터
예시 스크립트를 표시하는 스크립트 인스펙터

스크립트 인스펙터에는 OpenExecution Order 버튼 두 개가 표시됩니다.

Open은 프로젝트 창에서 스크립트를 더블 클릭하여 현재 설정된 외부 스크립트 편집기에서 스크립트를 여는 것과 동일한 기능을 수행합니다. Preferences 창의 External Tools 섹션에서 Unity가 스크립트를 열 때 사용하는 외부 에디터를 설정할 수 있습니다.

Execution Order 버튼을 누르면 Unity가 스크립트를 실행하는 순서를 설정할 수 있는 Project Settings 창의 Script Execution Order 섹션이 열립니다.

인스펙터 창의 스크립트 컴포넌트

모든 MonoBehaviour 스크립트는 다음과 같이 컴포넌트로 사용할 수 있습니다.

아래 예시 코드는 myName이라는 공개 필드를 선언합니다. 씬의 게임 오브젝트에 이 스크립트를 추가하면 필드가 인스펙터 창에서 My Name이라는 레이블이 지정된 필드로 표시됩니다. 스크립트에 선언된 none의 기본값은 필드에 입력하여 변경할 수 있는 인스펙터 창의 기본값이 됩니다.

using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour 
{
    public string myName = "none";
    
    // Use this for initialization
    void Start () 
    {
        Debug.Log("I am alive and my name is " + myName);
    }
}

스크립트 컴포넌트를 연결하는 각 게임 오브젝트는 필드에 고유한 값을 가질 수 있습니다.

인스펙터 창에서 편집할 수 있는 공개 문자열 필드
인스펙터 창에서 편집할 수 있는 공개 문자열 필드

필드 이름은 필드 이름을 레이블로 전환에 설명된 규칙에 따라 인스펙터 창 레이블로 전환됩니다. 하지만 이러한 변경 사항은 표시 목적으로만 적용됩니다. 코드에서는 항상 필드 이름을 사용해야 합니다.

인스펙터 창에서 My Name 값을 편집하고 플레이 버튼을 누르면 콘솔 메시지에 입력한 텍스트가 포함되어야 합니다.

공개 및 비공개 필드

모든 public 필드는 기본적으로 인스펙터 창에서 편집할 수 있습니다. public 변수가 인스펙터 창에 표시되지 않도록 하려면 HideInInspector 속성을 추가합니다. 인스펙터 창에서 private 필드를 편집할 수 있도록 하려면 SerializeField 속성을 추가합니다.

참고: 플레이 모드에서 실행하는 동안 에디터에서 스크립트 필드의 값을 변경할 수 있습니다. 이렇게 하면 중지하거나 다시 시작하지 않고도 변경 사항의 효과를 직접 확인할 수 있습니다. 하지만 플레이 모드를 종료하면 필드의 값이 플레이 모드를 시작하기 전의 값으로 초기화됩니다.

오브젝트 레퍼런스 필드

bool, string, int 같은 간단한 빌트인 C# 유형 외에도 유형이 UnityEngine.Object에서 상속되는 필드를 인스펙터 창에서 편집할 수도 있습니다. 여기에는 모든 빌트인 컴포넌트 유형(예: Transform, AudioSource, Camera, Light), 자체 MonoBehaviour 스크립트 유형, 여러 에셋 유형이 포함됩니다.

스크립팅된 컴포넌트에서 Unity 에디터 드래그 앤 드롭 시스템을 사용할 수 있습니다. 예를 들어 스크립트에서 공개 Transform 필드를 생성하여 하나의 게임 오브젝트에 추가하면 인스펙터 창의 해당 필드에 다른 게임 오브젝트를 드래그하여 해당 게임 오브젝트의 Transform 컴포넌트에 대한 레퍼런스를 설정할 수 있습니다. 이 컴포넌트는 스크립트의 런타임 시점에 액세스할 수 있습니다.

예를 들어 이 Follow 스크립트는 하나의 게임 오브젝트가 다른 게임 오브젝트를 따르도록 합니다.

using UnityEngine;

public class Follow : MonoBehaviour
{
    public Transform objectToFollow;
    public float followSpeed = 1;

    void Update()
    {
        // calculate the distance between this object and the target object
        // and move a small portion of that distance each frame:

        var delta = objectToFollow.position - transform.position;
        transform.position += delta * Time.deltaTime * followSpeed;
    }
}

이 스크립트에는 에디터에 할당 가능한 필드로 표시되는 Transform 유형의 공개 필드가 있습니다. 다른 게임 오브젝트를 계층 창에서 이 필드로 드래그 앤 드롭할 수 있으며, 에디터는 드롭한 해당 게임 오브젝트에 연결된 Transform 컴포넌트에 레퍼런스를 할당합니다.

아래 스크린샷에서는 스크립트가 구체 게임 오브젝트에 배치되고 Cube를 계층 구조에서 Object To Follow 필드로 드래그 앤 드롭합니다.

게임 오브젝트가 할당된 공개 트랜스폼 필드. 여기서 스크립트는 Sphere(현재 선택됨)에 있으며, Cube는 계층 구조에서 구체의 Object To Follow 필드로 드래그 앤 드롭되었습니다.
게임 오브젝트가 할당된 공개 트랜스폼 필드. 여기서 스크립트는 Sphere(현재 선택됨)에 있으며, Cube는 계층 구조에서 구체의 Object To Follow 필드로 드래그 앤 드롭되었습니다.

기본 오브젝트 레퍼런스

MonoBehaviour 스크립트에서 에디터에 할당할 수 있는 공개 오브젝트 필드를 정의하는 경우 이러한 필드에 대한 기본 레퍼런스를 설정할 수 있습니다. 프로젝트 창에서 스크립트 에셋을 선택하면 인스펙터에 기본 레퍼런스 필드가 표시됩니다.

3개의 AudioClip 필드가 있는 MonoBehaviour 스크립트. 이 필드의 기본 레퍼런스는 설정되지 않은 상태로 표시됩니다.
3개의 AudioClip 필드가 있는 MonoBehaviour 스크립트. 이 필드의 기본 레퍼런스는 설정되지 않은 상태로 표시됩니다.

위 예시에는 기본 레퍼런스가 할당되지 않은 3개의 공개 오디오 클립 필드가 있습니다. 오디오 클립을 각 AudioClip 기본 레퍼런스 필드에 할당할 수 있습니다.

기본 레퍼런스를 할당하면 MonoBehaviour를 게임 오브젝트에 컴포넌트로 추가하거나 게임 오브젝트의 기존 MonoBehaviour 인스턴스를 기본값으로 초기화할 때 적용됩니다.

참고: 게임 오브젝트의 MonoBehaviour 인스턴스에 대한 레퍼런스와 기본 레퍼런스는 지속적으로 연결되어 있지 않습니다. 따라서 기본 레퍼런스를 변경하면 기존 게임 오브젝트에서 자동으로 업데이트되지 않습니다.

UnityEngine.Object에서 상속받지 않는 다른 유형의 인스펙터 편집 가능한 필드(예: 공개 문자열 또는 int 필드)에는 인스펙터에 기본 필드가 없습니다. 대신 스크립트 자체에서 기본값을 가져옵니다.

필드 이름을 레이블로 전환

Unity는 일련의 규칙에 따라 인스펙터 창에서 C# 필드 이름을 레이블로 전환합니다. 예를 들어 위 예시에서는 변수 이름이 myName에서 My Name으로, objectToFollow에서 Object To Follow로 전환되었습니다. 규칙은 다음과 같습니다.

  • 첫 글자를 대문자로 표기
  • 소문자와 대문자 사이에 공백 추가
  • 다음 단어의 시작 부분에 있는 머리글자어와 대문자 사이에 공백 추가
  • m_ 접두사 제거
  • k 접두사 제거
  • _ 접두사 제거

iPad 또는 x64 같이 이러한 규칙이 적용되지 않는 몇 가지 특별한 사례도 있습니다.

추가 리소스

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