Unreal Cook Book:オブジェクトを作成するいくつかのポーズ(C++)
DEMOソースコード
このDEMOは、C++コードにおいて、Actor、ActorComponent、リソースのロードなど、UE 4の一般的なタイプのオブジェクトを作成することを実証している.
ソースコードはここからダウンロードしてください:https://code.csdn.net/neil3d/unrealcookbook使用するエンジンバージョンは4.11です.2
プロジェクトを開いたら、[CreateObjectDemo/CreateObjectDemoMap.umap]マップファイルを起動して実行します.
コンポーネントの作成
UE 4で、Actorのコンポーネントを作成するには、以下のようにUObject::CreateDefaultSubobject()テンプレート関数を使用します.
リソースオブジェクトのロード
UE 4では、プロジェクト内のすべてのリソースファイルは、ファイルと見なされるのではなく、「静的オブジェクト」、すなわちオブジェクトがシーケンス化された生成物として理解される.プロジェクトリソースをロードするには、「UObject::StaticLoadObject()」関数を使用します.重要なパラメータは、ファイルパスではなくオブジェクトのNameです.UEの最下位層は、リソースファイルが独立して記憶することにかかわらず、ファイルの読み取り機能を提供する.uassetファイルか、それとも保存するか.PAKファイルでは、上層部に関心を持つ必要はありません.
Actorオブジェクトの作成
以下に示すように、Actorオブジェクトを作成するには、UWorld::SpawnActor()インタフェースを使用します.
UObjectオブジェクトの作成
UObjectの派生クラス(非Actor、非ActorComponent)がある場合は、NewObject()テンプレート関数を使用してインスタンスオブジェクトを作成できます.
このDEMOは、C++コードにおいて、Actor、ActorComponent、リソースのロードなど、UE 4の一般的なタイプのオブジェクトを作成することを実証している.
ソースコードはここからダウンロードしてください:https://code.csdn.net/neil3d/unrealcookbook使用するエンジンバージョンは4.11です.2
プロジェクトを開いたら、[CreateObjectDemo/CreateObjectDemoMap.umap]マップファイルを起動して実行します.
コンポーネントの作成
UE 4で、Actorのコンポーネントを作成するには、以下のようにUObject::CreateDefaultSubobject()テンプレート関数を使用します.
/* <CreateObjectDemo>
* Component , CreateDefaultSubobject
*/
MyComponent = CreateDefaultSubobject<UMyActorComponent>(TEXT("MyComponent"));
リソースオブジェクトのロード
UE 4では、プロジェクト内のすべてのリソースファイルは、ファイルと見なされるのではなく、「静的オブジェクト」、すなわちオブジェクトがシーケンス化された生成物として理解される.プロジェクトリソースをロードするには、「UObject::StaticLoadObject()」関数を使用します.重要なパラメータは、ファイルパスではなくオブジェクトのNameです.UEの最下位層は、リソースファイルが独立して記憶することにかかわらず、ファイルの読み取り機能を提供する.uassetファイルか、それとも保存するか.PAKファイルでは、上層部に関心を持つ必要はありません.
/* <CreateObjectDemo>
* 、 , StaticLoadObject
*/
UStaticMesh* SM_Vase = Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(),
NULL,
TEXT("/Game/Assets/StaticMeshes/SM_Vase"))
);
StaticMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));
StaticMeshComponent->SetStaticMesh(SM_Vase);
Actorオブジェクトの作成
以下に示すように、Actorオブジェクトを作成するには、UWorld::SpawnActor()インタフェースを使用します.
/* <CreateObjectDemo>
* AActor NewObject new, UWorld::SpawnActor()
*/
UWorld* World = GetWorld();
FVector pos(150, 0, 20);
AMyActor* MyActor = World->SpawnActor<AMyActor>(pos, FRotator::ZeroRotator);
UObjectオブジェクトの作成
UObjectの派生クラス(非Actor、非ActorComponent)がある場合は、NewObject()テンプレート関数を使用してインスタンスオブジェクトを作成できます.
/* <CreateObjectDemo>
* NewObject , UObject
*/
MyObject = NewObject<UMyObject>();