環境
UE 4.10.0
Visual Studio 2015
概要
Unreal Engine 4 の C++ コーディングではまった点をまとめ
※随時更新予定
本文
CreateDefaultSubobject はコンストラクタでコールする
スタティックメッシュコンポーネントを追加しようとして以下のコードを BeginPlay
で以下のコードを追加したら、エディタがクラッシュした。
void AMyActor::BeginPlay()
{
Super::BeginPlay();
UStaticMeshComponent* sphere = CreateDefaultSubobject(TEXT("sphere_component"));
sphere->AttachTo(RootComponent);
}
CreateDefaultSubobject が nullptr を返しているのか?と思ったが戻り値にアクセス
しなくてもエディタがクラッシュするので調査してみたら CreateDefaultSubobject
はコンストラクタでコールするものらしい。
コンストラクタでしか呼べないならコンパイル時になんとか分からないだろうか。。。
( むずかしいけど、ビルド拡張しているなら可能な気がする )。
せめてエディタクラッシュは勘弁してほしい( nullptr 返しても良いから )。