NewObject
NewObject() 는 가장 간단한 UObject 팩토리 메서드입니다. 선택적 외부 오브젝트와 클래스를 가져와 새 인스턴스를 만듭니다. 이름은 자동 생성됩니다.
template< class T >
T* NewObject
(
UObject* Outer=(UObject*)GetTransientPackage(),
UClass* Class=T::StaticClass()
)
| 파라미터 | 설명 |
|---|---|
외부(Outer) |
(선택 사항) 생성되는 오브젝트의 외부로 설정할 UObject 입니다. |
클래스(Class) |
(선택 사항) 생성되는 오브젝트의 클래스를 지정하는 UClass 입니다. |
| 반환 값(Return Value) | 지정된 클래스의 스폰된 인스턴스에 대한 포인터입니다. |
NewNamedObject
NewNamedObject() 는 새 인스턴스의 이름은 물론 오브젝트 플래그 및 템플릿 오브젝트를 실행인자로 지정할 수 있도록 하여 NewObject() 를 확장합니다.
template< class TClass >
TClass* NewNamedObject
(
UObject* Outer,
FName Name,
EObjectFlags Flags = RF_NoFlags,
UObject const* Template=NULL
)
| 파라미터 | 설명 |
|---|---|
외부(Outer) |
생성되는 오브젝트의 외부로 설정할 UObject 입니다. |
이름(Name) |
새 오브젝트의 이름 으로 설정할 FName 입니다. |
플래그(Flags) |
(선택 사항) 새 오브젝트를 설명하는 FObjectFlags 열거형 값입니다. |
템플릿(Template) |
(선택 사항) 새 오브젝트를 생성할 때 템플릿으로 사용할 UObject 입니다. |
| 반환 값(Return Value) | 지정된 클래스의 스폰된 인스턴스에 대한 포인터입니다. |
ConstructObject
완전한 유연성을 위해 ConstructObject() 함수를 사용하여 UObjects 의 새 인스턴스를 생성할 수 있습니다. 이 함수는 오브젝트를 할당하고, ClassConstructor 를 실행하며, 환경설정 프로퍼티 로드, 로컬화된 프로퍼티 로드, 컴포넌트 인스턴스화 등의 초기화를 수행하는 StaticConstructObject() 를 호출합니다.
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) |
생성되는 오브젝트의 클래스를 지정하는 UClass 입니다. |
외부(Outer) |
(선택 사항) 생성되는 오브젝트의 외부로 설정할 UObject 입니다. |
이름(Name) |
(선택 사항) 새 오브젝트의 이름 으로 설정할 FName 입니다. |
SetFlags |
(선택 사항) 새 오브젝트를 설명하는 EObjectFlags 열거형 값입니다. |
템플릿(Template) |
(선택 사항) 새 오브젝트를 생성할 때 템플릿으로 사용할 UObject 입니다. |
bCopyTransientsFromClassDefaults |
(선택 사항) 전달된 아키타입 포인터 대신 클래스 기본 오브젝트에서 임시 프로퍼티를 복사할지 여부를 결정하는 부울 입니다. True 인 경우, 클래스 디폴트 오브젝트의 트랜션트가 사용됩니다. |
FObjectInstancingGraph |
(선택 사항) 인스턴스화된 오브젝트와 컴포넌트의 템플릿 매핑이 포함된 FObjectInstancingGraph 구조체입니다. 새 오브젝트가 소유한 컴포넌트를 인스턴스화하는 데 사용됩니다. |
| 반환 값(Return Value) | 지정된 클래스의 스폰된 인스턴스에 대한 포인터입니다. |
오브젝트 플래그
EObjectFlags 열거형은 오브젝트를 빠르고 간결하게 설명하는 데 사용합니다. 오브젝트의 타입, 가비지 컬렉션에 의해 오브젝트가 처리되는 방법, 오브젝트의 수명 단계 등을 설명하는 다양한 플래그가 있습니다. 모두 특수 또는 마스크 없음 그리고 사전 정의된 플래그 그룹도 있습니다.
| 플래그 | 값 | 설명 |
|---|---|---|
| 오브젝트 타입(Object Type) | ||
| RF_Public | 0x00000001 |
오브젝트를 포함된 패키지 외부에서 볼 수 있습니다. |
| RF_Standalone | 0x00000002 |
오브젝트가 전혀 레퍼런스되지 않더라도 편집을 위해 유지됩니다. |
| RF_Native | 0x00000004 |
오브젝트가 네이티브입니다. UClass 오브젝트에만 사용됩니다. |
| RF_Transactional | 0x00000008 |
오브젝트가 트랜잭션입니다. |
| RF_ClassDefaultObject | 0x00000010 |
오브젝트가 해당 클래스의 디폴트 오브젝트입니다. 즉, 해당 클래스의 새 인스턴스가 생성될 때 사용하는 디폴트 템플릿입니다. |
| RF_ArchetypeObject | 0x00000020 |
오브젝트가 다른 오브젝트의 템플릿입니다. 클래스 디폴트 오브젝트처럼 처리됩니다. |
| RF_Transient | 0x00000040 |
오브젝트가 디스크에 저장되지 않습니다. |
| 가비지 컬렉션(Garbage Collection) | ||
| RF_RootSet | 0x00000080 |
전혀 레퍼런스되지 않더라도 오브젝트가 가비지 컬렉션되지 않습니다. |
| RF_IsLazyReferenced | 0x00000100 |
오브젝트가 지연 포인터에 의해 레퍼런스되며 삭제 시 추가 정리가 필요합니다. |
| RF_Unreachable | 0x00000200 |
오브젝트 그래프에서 오브젝트에 접근할 수 없습니다. |
| RF_TagGarbageTemp | 0x00000400 |
오브젝트가 가비지 컬렉션을 사용하는 다양한 유틸리티에서 사용하도록 표시됩니다. 이 플래그는 가비지 컬렉터 자체에서 해석되지 않습니다. |
| 오브젝트 수명(Object Lifetime) | ||
| RF_NeedLoad | 0x00000800 |
오브젝트에 로딩이 필요합니다. |
| RF_AsyncLoading | 0x00001000 |
오브젝트가 비동기적으로 로드되고 있습니다. |
| RF_NeedPostLoad | 0x00002000 |
오브젝트를 사후 로드해야 합니다. |
| RF_NeedPostLoadSubobjects | 0x00004000 |
오브젝트가 여전히 하위 오브젝트를 인스턴스화하고 시리얼라이즈된 컴포넌트 레퍼런스를 수정해야 합니다. |
| RF_PendingKill | 0x00008000 |
오브젝트가 소멸 대기 중입니다. 오브젝트를 게임플레이 목적으로는 유효하지 않지만 여전히 유효한 오브젝트로 표시합니다. |
| RF_BeginDestroyed | 0x00010000 |
오브젝트에 BeginDestroy() 가 호출되어 있습니다. |
| RF_FinishDestroyed | 0x00020000 |
오브젝트에 FinishDestroy() 가 호출되어 있습니다. |
| 특수 마스크(Special Masks) | ||
| RF_AllFlags | 0x0003ffff |
오브젝트에 모든 플래그가 있습니다. 주로 오류 체크에 사용됩니다. |
| RF_NoFlags | 0x00000000 |
오브젝트에 플래그가 없습니다. 형변환 방지를 위해 사용됩니다. |
| 사전 정의 그룹(Predefined Groups) | ||
| RF_Load | RF_Public | RF_Standalone | RF_Native | RF_Transactional | RF_ClassDefaultObject | RF_ArchetypeObject |
언리얼 파일에서 로드된 플래그입니다. |
| RF_PropagateToSubobjects | RF_Public | RF_ArchetypeObject | RF_Transactional |
상위 오브젝트에서 하위 오브젝트로 상속된 플래그입니다. |