以前のリビジョンの文書です
—-
Warning: Declaration of syntax_plugin_linebreak::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in
/home/stepism/www/ue4/wiki/lib/plugins/linebreak/syntax.php on line
52
Warning: Declaration of syntax_plugin_linebreak::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in
/home/stepism/www/ue4/wiki/lib/plugins/linebreak/syntax.php on line
74
Warning: Declaration of syntax_plugin_markdownextra::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in
/home/stepism/www/ue4/wiki/lib/plugins/markdownextra/syntax.php on line
38
Warning: Declaration of syntax_plugin_markdownextra::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in
/home/stepism/www/ue4/wiki/lib/plugins/markdownextra/syntax.php on line
47
Warning: Declaration of syntax_plugin_syntaxhighlighter3_syntax::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in
/home/stepism/www/ue4/wiki/lib/plugins/syntaxhighlighter3/syntax/syntax.php on line
53
Warning: Declaration of syntax_plugin_syntaxhighlighter3_syntax::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in
/home/stepism/www/ue4/wiki/lib/plugins/syntaxhighlighter3/syntax/syntax.php on line
82
アクターの生成(4.7.5)
ブループリント版
レベルブループリントを開いてアクター生成処理を追加します。
これでコンパイルして実行すると、空っぽのアクターが生成される。生成処理自体はこれで完了。ただ、このままでは表示する物体(メッシュ)が無いので追加して表示される様に修正します。SpawnActorで生成するアクターのブループリントを開いてメッシュ―コンポーネントを追加します。
詳細パネルのStatic Meshから好きなメッシュを選択してコンパイルし再生すると表示される様になります。
C++版
「コンテンツブラウザ」の「新規追加」から「新規C++ Class…」を選択する。
親クラスに「Game Mode」を選択して次へ。
名前を「MyGameMode」として「クラスを作成」する。
class MYPROJECT_API AMyGameMode : public AGameMode
{
GENERATED_BODY()
private:
virtual void BeginPlay() override; // 追加
};
BeginPlay 関数をオーバーライドして、その中に生成処理を追加します。
#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);
}
}
この時点でワールドアウトライナーに追加すると空のアクターが生成されます。
次にメッシュを生成し設定します。
まず必要なメンバーを用意して
USceneComponent* DummyRoot;
TSubobjectPtr<UStaticMeshComponent> MeshComp;
ファイルを読み込んで、コンポーネントとしてアクターにアタッチする。
// コンストラクタ
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);
}
これで表示される。MeshObjに渡すファイルパスは頭に「/Game」を付けないとロードされないので注意。