Version: Unity 6.0 (6000.0)
언어 : 한국어
기본 Unity 유형
MonoBehaviour

오브젝트

Switch to Scripting

UnityEngine.Object 클래스는 Unity가 Unity 에디터에서 참조할 수 있는 모든 오브젝트의 기본 클래스입니다. UnityEngine.Object에서 상속하는 클래스를 인스펙터의 필드에 끌어서 놓거나 오브젝트 필드 옆의 오브젝트 피커를 사용하여 선택할 수 있습니다.

인스펙터 창의 오브젝트 필드 예시입니다. 오브젝트 피커는 필드 오른쪽의 원형 아이콘입니다.
인스펙터 창의 오브젝트 필드 예시입니다. 오브젝트 피커는 필드 오른쪽의 원형 아이콘입니다.

커스텀 클래스의 Object에서 직접 상속하는 것보다는 목표에 맞게 설계된 클래스에서 상속하는 것이 좋습니다. 예시:

  • GameObject에 추가할 수 있는 커스텀 컴포넌트를 작성하거나, GameObject가 수행하는 작업을 제어하거나, 일부 관련 기능을 제공하려면 MonoBehaviour에서 상속합니다.
  • 직렬화된 데이터를 저장할 수 있는 커스텀 에셋을 생성하려면 ScriptableObject에서 상속합니다.

둘 다 UnityEngine.Object에서 상속되지만 이러한 목적에 적합한 추가 기능을 제공합니다.

참고: 이름이 충돌하지 않도록 UnityEngine.Object는 기본 스크립트 템플릿에 포함되지 않는 .NET의 기본 System.Object와 같지 않습니다. 인스펙터에서 할당할 필요가 없는 클래스를 만들려는 경우 여전히 .NET의 System.Object에서 상속할 수 있습니다.

Object 클래스는 오브젝트를 인스턴스화하고 제거하고 특정 유형의 오브젝트에 대한 레퍼런스를 찾기 위한 메서드를 제공합니다. Object 클래스의 API에 대한 자세한 내용은 오브젝트의 스크립트 레퍼런스 페이지를 참조하십시오.

UnityEngine.Object의 특수 동작

UnityEngine.Object는 관리되지 않는(C++) 대응 오브젝트에 연결되어 있기 때문에 Unity의 특수한 C# 오브젝트 유형입니다. 예를 들어 Camera 컴포넌트를 사용하는 경우 Unity는 C# 오브젝트 자체가 아니라 C++로 구현된 대응 오브젝트에 오브젝트의 상태를 저장합니다.

Unity는 현재 C# WeakReference 클래스를 UnityEngine.Object 인스턴스와 함께 사용할 수 없습니다. 따라서 로드된 에셋을 참조하기 위해 WeakReference를 사용해서는 안 됩니다. WeakReference 클래스에 대한 자세한 내용은 Microsoft의 WeakReference 기술 자료를 참조하십시오.

Unity C# 및 Unity C++가 공유하는 UnityEngine 오브젝트

UnityEngine.Object에서 파생된 오브젝트를 제거하기 위해 Object.Destroy 또는 Object.DestroyImmediate 같은 메서드를 사용하는 경우 Unity는 C++ 대응 오브젝트를 제거(언로드)합니다. 가비지 컬렉터가 메모리를 관리하므로 명시적인 호출로 C# 오브젝트를 제거할 수 없습니다. 관리되는 오브젝트에 대한 레퍼런스가 더 이상 없으면 가비지 컬렉터가 이를 수집하고 제거합니다.

애플리케이션이 삭제된 UnityEngine.Object에 다시 액세스하려고 하면 Unity는 대부분의 유형에 대한 네이티브 대응 오브젝트를 다시 생성합니다. 이 재생성 동작에는 MonoBehaviourScriptableObject라는 두 가지 예외가 있습니다. Unity는 이러한 오브젝트가 제거된 후에는 다시 로드하지 않습니다.

MonoBehaviourScriptableObject는 같음(==) 및 같지 않음(!=) 연산자를 오버라이드합니다. 제거된 MonoBehaviour 또는 ScriptableObjectnull과 비교하면 관리되는 오브젝트가 여전히 존재하고 가비지 수집이 아직 이루어지지 않은 경우 연산자는 true를 반환합니다.

?? 및 ?. 연산자를 오버로드할 수 없으므로 UnityEngine.Object에서 파생된 오브젝트와 호환되지 않습니다. 관리되는 오브젝트가 여전히 존재하는 동안 제거된 MonoBehaviour 또는 ScriptableObject에서 사용하는 경우 같음 및 같지 않음 연산자와 동일한 결과를 반환하지 않습니다.

추가 리소스

기본 Unity 유형
MonoBehaviour