UObject インスタンスの作成

ゲームプレイ コードでオブジェクトの新規インスタンスを作成する手法

NewObject

NewObject() は最もシンプルな UObject のファクトリ メソッドです。任意の外部オブジェクトとクラスを受け取り、自動生成される名前で新規のインスタンスを作成します。

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

パラメータ

説明

Outer

(任意) 作成中の Object の Outer として設定する UObject です。

Class

(任意) 作成する Object のクラスを指定する UClass です。

Return Value

指定クラスのスポーンされたインスタンスへのポインターです。

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 の列挙型変数。

Template

(任意) 新規 Object の作成時に、テンプレートとして使用する UObject

Return Value

指定クラスのスポーンされたインスタンスへのポインターです。

ConstructObject

柔軟性を極めるために、 UObjects の新規インスタンスは ConstructObject()関数を使って作成することができます。この関数は Object を割り当てる StaticConstructObject() を呼び出し、ClassConstructor を実行し、config プロパティの読み込み、ローカライズされたプロパティの読み込み、コンポーネントのインスタンス化といった初期化を実行します。

    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

(任意) 新規 Object を表す EObjectFlags の列挙型変数。

Template

(任意) 新規 Object の作成時に、テンプレートとして使用する UObject

bCopyTransientsFromClassDefaults

任意です。渡されたアーキタイプのポインターの代わりにクラスのデフォルト オブジェクトから一時プロパティのコピーの実行を判断する bool 値です。`true' の場合、クラスのデフォルト オブジェクトの一時プロパティが使用されます。

FObjectInstancingGraph

任意。インスタンス化されたオブジェクトとコンポーネントのマッピングをテンプレートへ格納する FObjectInstancingGraph 構造体です。新規の Object が所有するコンポーネントをインスタンス化する際に使用します。

Return Value

指定クラスのスポーンされたインスタンスへのポインターです。

Object Flags

EObjectFlags 列挙型変数は、 Object を迅速かつ簡潔に表す際に使用します。Object の型、ガーベジ コレクションの処理方法の説明、ライフタイムにおける Object のステージ状況などを表すさまざまなフラグがあります。特別なマスク、全てのマスク、マスク無しや、定義済みのフラグのグループもあります。

フラグ

説明

オブジェクトの型

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 はサブ オブジェクトをインスタンス化し、シリアル化されたコンポーネント参照を修正する必要があります。

RF_PendingKill

0x00008000

Object は、破壊のペンディング状態です。ゲームプレイ上の理由から無効なものとしてマスクしても、有効な Object のままです。

RF_BeginDestroyed

0x00010000

Object は BeginDestroy() を呼び出しました。

RF_FinishDestroyed

0x00020000

Object は FinishDestroy() を呼び出しました。

特別なマスク

RF_AllFlags

0x0003ffff

Object は全てのフラグを持っています。主にエラーのチェックに使用します。

RF_NoFlags

0x00000000

Object はフラグを持っていません。キャストの回避に使用します。

定義済みグループ

RF_Load

RF_Public | RF_Standalone | RF_Native | RF_Transactional | RF_ClassDefaultObject | RF_ArchetypeObject

フラグはアンリアル ファイルから読み込まれます。

RF_PropagateToSubobjects

RF_Public | RF_ArchetypeObject | RF_Transactional

フラグはスーパー オブジェクトのサブオブジェクトによって継承されます。

タグ
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル