NewObject
NewObject()
는 가장 단순한 UObject 팩토리 메서드입니다. 옵션 outer 오브젝트와 클래스를 받은 다음 자동 생성된 이름으로 인스턴스를 새로 만듭니다.
template< class T >
T* NewObject
(
UObject* Outer=(UObject*)GetTransientPackage(),
UClass* Class=T::StaticClass()
)
파라미터 |
설명 |
|
---|---|---|
|
옵션. 생성중인 Object 에 대한 Outer 로 설정할 |
|
|
옵션. 생성될 Object 의 클래스를 나타내는 |
|
반환값 |
||
지정된 클래스의 스폰된 인스턴스로의 포인터입니다. |
NewNamedObject
NewNamedObject()
는 NewObject()
를 확장하여 새 인스턴스의 이름은 물론 오브젝트 플래그 과 템플릿 오브젝트를 인수로 지정할 수도 있습니다.
template< class TClass >
TClass* NewNamedObject
(
UObject* Outer,
FName Name,
EObjectFlags Flags = RF_NoFlags,
UObject const* Template=NULL
)
파라미터 |
설명 |
|
---|---|---|
|
생성중인 Object 에 대한 Outer 로 설정할 |
|
|
새 Object 에 대한 |
|
|
옵션. 새 Object 를 설명하는 |
|
|
옵션. 새 Object 생성시 템플릿으로 사용할 |
|
반환값 |
||
지정된 클래스의 스폰된 인스턴스의 포인터입니다. |
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
)
파라미터 |
설명 |
|
---|---|---|
|
생성할 **Object* 의 클래스를 나타내는 `UClass` 입니다. |
|
|
옵션. 생성중인 Object 에 대한 Outer 로 설정할 |
|
|
옵션. 새 Object 에 대한 |
|
|
옵션. An |
|
|
옵션. 새 Object 생성시 템플릿으로 사용할 |
|
|
옵션. 전달된 아키타입 포인터 대신 클래스 디폴트 오브젝트에서의 트랜션트 프로퍼티를 복사해 올지 결정하는 |
|
|
옵션. 인스턴싱된 오브젝트와 컴포넌트를 그 템플릿에 대입시킨 매핑이 들어있는 |
|
반환값 |
||
지정된 클래스의 스폰된 인스턴스로의 포인터입니다. |
오브젝트 플래그
EObjectFlags
Enum 은 Object 를 빠르고 간단하게 기술하는 데 사용됩니다. Object 유형, 가비지 컬렉션 처리 방식, Object 가 수명의 어느 단계에 있는가 등을 기술하는 여러가지 플래그가 있습니다. 특수한 all or none 마스크도, 미리정의된 플래그 그룹도 있습니다.
플래그 |
값 |
설명 |
||
---|---|---|---|---|
Object Type |
||||
RF_Public |
|
이 Object 는 포함된 패키지 밖에서도 보입니다. |
||
RF_Standalone |
|
이 Object 는 아무것에 레퍼런스되지 않아도 편집가능 상태로 유지됩니다. |
||
RF_Native |
|
네이티브 Object 입니다. |
||
RF_Transactional |
|
트랜잭션 가능한 Object 입니다. |
||
RF_ClassDefaultObject |
|
자기 클래스의 디폴트 오브젝트인 Object 입니다. 즉 해당 클래스의 인스턴스가 새로 생성될 때 사용할 기본 템플릿입니다. |
||
RF_ArchetypeObject |
|
이 Object 는 다른 오브젝트에 대한 템플릿입니다. 클래스 디폴트 오브젝트처럼 취급됩니다. |
||
RF_Transient |
|
이 Object 는 디스크에 저장되지 않습니다. |
||
가비지 컬렉션 |
||||
RF_RootSet |
|
이 Object 는 어느 것에 레퍼런스되지 않아도 가비지 콜렉팅되지 않습니다. |
||
RF_IsLazyReferenced |
|
이 Object 는 게으른 포인터로 참조되어, 삭제 후에도 청소 작업을 해 줘야 합니다. |
||
RF_Unreachable |
|
이 Object 는 오브젝트 그래프 상에서 도달할 수 없습니다. |
||
RF_TagGarbageTemp |
|
이 Object 는 가비지 컬렉션을 사용하는 다양한 유틸리티가 사용할 수 있도록 마킹됩니다. 이 플래그는 가비지 콜렉터 자체적으로는 해석하지 않습니다. |
||
오브젝트 수명 |
||||
RF_NeedLoad |
|
이 Object 는 로딩이 필요합니다. |
||
RF_AsyncLoading |
|
이 Object 는 비동기 로딩중입니다. |
||
RF_NeedPostLoad |
|
이 Object 는 사후 로딩이 필요합니다. |
||
RF_NeedPostLoadSubobjects |
|
이 Object 는 여전히 서브 오브젝트를 참조하여 serialize 된 컴포넌트 레퍼런스를 고쳐줘야 합니다. |
||
RF_PendingKill |
|
이 Object 는 소멸 대기중입니다. Object 를 게임플레이 용도로는 사용할 수 없는 것으로 마킹은 하지만, 여전히 유효한 Object 입니다. |
||
RF_BeginDestroyed |
|
이 Object 에서 |
||
RF_FinishDestroyed |
|
이 Object 에서 |
||
특수 마스크 |
||||
RF_AllFlags |
|
이 Object 에는 모든 플래그가 있습니다. 주로 오류 검사용으로 사용됩니다. |
||
RF_NoFlags |
|
이 Object 에는 플래그가 없습니다. 형 변환(cast)을 피하기 위해 사용됩니다. |
||
미리정의된 그룹 |
||||
RF_Load |
|
언리얼 파일에서 로드되는 플래그입니다. |
||
RF_PropagateToSubobjects |
|
상위 오브젝트에서 하위 오브젝트에 상속되는 플래그입니다. |