この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
wiki:ue4:tips:503 [2015/04/24 12:39] step |
wiki:ue4:tips:503 [2015/04/25 06:21] (現在) step |
||
---|---|---|---|
ライン 21: | ライン 21: | ||
===== C++版 ===== | ===== C++版 ===== | ||
+ | - 「コンテンツブラウザ」の「新規追加」から「新規C++ Class…」を選択する。 | ||
+ | - 親クラスに「Game Mode」を選択して次へ。 | ||
+ | - 名前を「MyGameMode」として「クラスを作成」する。 | ||
+ | <sxh cpp; title: AMyGameMode.h> | ||
+ | class MYPROJECT_API AMyGameMode : public AGameMode | ||
+ | { | ||
+ | GENERATED_BODY() | ||
+ | |||
+ | private: | ||
+ | virtual void BeginPlay() override; // 追加 | ||
+ | }; | ||
+ | </sxh> | ||
+ | BeginPlay 関数をオーバーライドして、その中に生成処理を追加します。 | ||
+ | |||
+ | <sxh cpp; title: AMyGameMode.cpp> | ||
+ | |||
+ | #include "MyActor.h" // アクター使用 | ||
+ | |||
+ | void AMyGameMode::BeginPlay() | ||
+ | { | ||
+ | Super::BeginPlay(); | ||
+ | |||
+ | UWorld* const pWorld = GetWorld(); | ||
+ | if (pWorld) | ||
+ | { | ||
+ | FVector spawnPos = FVector(0.0f, 0.0f, 0.0f); | ||
+ | FRotator spawnRot = FRotator::ZeroRotator; | ||
+ | |||
+ | AMyActor* pNewActor = pWorld->SpawnActor<AMyActor>( | ||
+ | AMyActor::StaticClass(), | ||
+ | spawnPos, | ||
+ | spawnRot); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </sxh> | ||
+ | |||
+ | この時点でワールドアウトライナーに追加すると空のアクターが生成されます。 | ||
+ | 次にメッシュを生成し設定します。 | ||
+ | |||
+ | まずアクターに必要なメンバーを用意して | ||
+ | <sxh cpp; title: AMyActor.h> | ||
+ | USceneComponent* DummyRoot; | ||
+ | TSubobjectPtr<UStaticMeshComponent> MeshComp; | ||
+ | </sxh> | ||
+ | |||
+ | |||
+ | ファイルを読み込んで、コンポーネントとしてアクターにアタッチする。 | ||
+ | <sxh cpp; title: AMyActor.cpp> | ||
+ | // コンストラクタ | ||
+ | AMyActor::AMyActor() | ||
+ | { | ||
+ | PrimaryActorTick.bCanEverTick = true; | ||
+ | |||
+ | RunningTime = 0.0f; | ||
+ | |||
+ | // ダミーのルートコンポーネントを追加 | ||
+ | DummyRoot = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent")); | ||
+ | RootComponent = DummyRoot; | ||
+ | |||
+ | // メッシュコンポーネント作成 | ||
+ | MeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh")); | ||
+ | |||
+ | // メッシュデータ読み込み | ||
+ | const ConstructorHelpers::FObjectFinder<UStaticMesh> MeshObj(TEXT("/Game/StarterContent/Shapes/Shape_Cylinder")); | ||
+ | |||
+ | // メッシュ設定 | ||
+ | MeshComp->SetStaticMesh(MeshObj.Object); | ||
+ | |||
+ | // ルートコンポーネントにアタッチの | ||
+ | MeshComp->AttachTo(RootComponent); | ||
+ | } | ||
+ | |||
+ | </sxh> | ||
+ | これで表示されます。MeshObjに渡すファイルパスは頭に「/Game」を付けないとロードされないので注意すること。 | ||