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 |
상위 오브젝트에서 하위 오브젝트에 상속되는 플래그입니다. |