UObject 인스턴스 생성

게임플레이 코드에서 오브젝트의 새 인스턴스, 즉 UObject 생성 메서드입니다.

Windows
MacOS
Linux

NewObject

NewObject() 는 가장 단순한 UObject 팩토리 메서드입니다. 옵션 outer 오브젝트와 클래스를 받은 다음 자동 생성된 이름으로 인스턴스를 새로 만듭니다.

template< class T >
T* NewObject
(
    UObject* Outer=(UObject*)GetTransientPackage(),
    UClass* Class=T::StaticClass() 
)

파라미터

설명

Outer

옵션. 생성중인 Object 에 대한 Outer 로 설정할 UObject 입니다.

Class

옵션. 생성될 Object 의 클래스를 나타내는 UClass 입니다.

반환값

지정된 클래스의 스폰된 인스턴스로의 포인터입니다.

NewNamedObject

NewNamedObject()NewObject() 를 확장하여 새 인스턴스의 이름은 물론 오브젝트 플래그 과 템플릿 오브젝트를 인수로 지정할 수도 있습니다.

template< class TClass >
TClass* NewNamedObject
(
    UObject* Outer, 
    FName Name, 
    EObjectFlags Flags = RF_NoFlags, 
    UObject const* Template=NULL
)

파라미터

설명

Outer

생성중인 Object 에 대한 Outer 로 설정할 UObject 입니다.

Name

Object 에 대한 Name 으로 설정할 FName 입니다.

Flags

옵션. 새 Object 를 설명하는 FObjectFlags enum 값입니다.

Template

옵션. 새 Object 생성시 템플릿으로 사용할 UObject 입니다.

반환값

지정된 클래스의 스폰된 인스턴스의 포인터입니다.

ConstructObject

완벽한 유연성을 위해서는 ConstructObject() 함수를 사용하여 UObject 의 새 인스턴스를 생성할 수 있습니다. 이 함수는 StaticConstructObject() 를 호출하여 Object 할당, ClassConstructor 실행, config 과 localized 프로퍼티 로드 및 컴포넌트 인스턴싱과 같은 초기화를 수행합니다.

template< class T >
T* ConstructObject
(
    UClass* Class, 
    UObject* Outer = (UObject*)GetTransientPackage(), 
    FName Name=NAME_None, 
    EObjectFlags SetFlags=RF_NoFlags, 
    UObject const* Template=NULL, 
    bool bCopyTransientsFromClassDefaults=false, 
    struct FObjectInstancingGraph* InstanceGraph=NULL 
)

파라미터

설명

Class

생성할 **Object* 의 클래스를 나타내는 UClass 입니다.

Outer

옵션. 생성중인 Object 에 대한 Outer 로 설정할 UObject 입니다.

Name

옵션. 새 Object 에 대한 Name 으로 설정할 FName 입니다.

SetFlags

옵션. An EObjectFlags enum value describing the new Object.

Template

옵션. 새 Object 생성시 템플릿으로 사용할 UObject 입니다.

bCopyTransientsFromClassDefaults

옵션. 전달된 아키타입 포인터 대신 클래스 디폴트 오브젝트에서의 트랜션트 프로퍼티를 복사해 올지 결정하는 bool 입니다. true 면 클래스 디폴트 오브젝트의 휘발성 프로퍼티가 사용됩니다.

FObjectInstancingGraph

옵션. 인스턴싱된 오브젝트와 컴포넌트를 그 템플릿에 대입시킨 매핑이 들어있는 FObjectInstancingGraph 구조체입니다. 새 Object 에 소유된 컴포넌트 인스턴싱에 사용됩니다.

반환값

지정된 클래스의 스폰된 인스턴스로의 포인터입니다.

오브젝트 플래그

EObjectFlags Enum 은 Object 를 빠르고 간단하게 기술하는 데 사용됩니다. Object 유형, 가비지 컬렉션 처리 방식, Object 가 수명의 어느 단계에 있는가 등을 기술하는 여러가지 플래그가 있습니다. 특수한 all or none 마스크도, 미리정의된 플래그 그룹도 있습니다.

플래그

설명

Object Type

RF_Public

0x00000001

Object 는 포함된 패키지 밖에서도 보입니다.

RF_Standalone

0x00000002

Object 는 아무것에 레퍼런스되지 않아도 편집가능 상태로 유지됩니다.

RF_Native

0x00000004

네이티브 Object 입니다. UClass 오브젝트에만 사용됩니다.

RF_Transactional

0x00000008

트랜잭션 가능한 Object 입니다.

RF_ClassDefaultObject

0x00000010

자기 클래스의 디폴트 오브젝트인 Object 입니다. 즉 해당 클래스의 인스턴스가 새로 생성될 때 사용할 기본 템플릿입니다.

RF_ArchetypeObject

0x00000020

Object 는 다른 오브젝트에 대한 템플릿입니다. 클래스 디폴트 오브젝트처럼 취급됩니다.

RF_Transient

0x00000040

Object 는 디스크에 저장되지 않습니다.

가비지 컬렉션

RF_RootSet

0x00000080

Object 는 어느 것에 레퍼런스되지 않아도 가비지 콜렉팅되지 않습니다.

RF_IsLazyReferenced

0x00000100

Object 는 게으른 포인터로 참조되어, 삭제 후에도 청소 작업을 해 줘야 합니다.

RF_Unreachable

0x00000200

Object 는 오브젝트 그래프 상에서 도달할 수 없습니다.

RF_TagGarbageTemp

0x00000400

Object 는 가비지 컬렉션을 사용하는 다양한 유틸리티가 사용할 수 있도록 마킹됩니다. 이 플래그는 가비지 콜렉터 자체적으로는 해석하지 않습니다.

오브젝트 수명

RF_NeedLoad

0x00000800

Object 는 로딩이 필요합니다.

RF_AsyncLoading

0x00001000

Object 는 비동기 로딩중입니다.

RF_NeedPostLoad

0x00002000

Object 는 사후 로딩이 필요합니다.

RF_NeedPostLoadSubobjects

0x00004000

Object 는 여전히 서브 오브젝트를 참조하여 serialize 된 컴포넌트 레퍼런스를 고쳐줘야 합니다.

RF_PendingKill

0x00008000

Object 는 소멸 대기중입니다. Object 를 게임플레이 용도로는 사용할 수 없는 것으로 마킹은 하지만, 여전히 유효한 Object 입니다.

RF_BeginDestroyed

0x00010000

Object 에서 BeginDestroy() 가 호출되었습니다.

RF_FinishDestroyed

0x00020000

Object 에서 FinishDestroy() 가 호출되었습니다.

특수 마스크

RF_AllFlags

0x0003ffff

Object 에는 모든 플래그가 있습니다. 주로 오류 검사용으로 사용됩니다.

RF_NoFlags

0x00000000

Object 에는 플래그가 없습니다. 형 변환(cast)을 피하기 위해 사용됩니다.

미리정의된 그룹

RF_Load

RF_Public | RF_Standalone | RF_Native | RF_Transactional | RF_ClassDefaultObject | RF_ArchetypeObject

언리얼 파일에서 로드되는 플래그입니다.

RF_PropagateToSubobjects

RF_Public | RF_ArchetypeObject | RF_Transactional

상위 오브젝트에서 하위 오브젝트에 상속되는 플래그입니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼