UE4メモ
Unreal Engine 4に関するメモ書き。
ネイティブ
C++から文字列のコンソールコマンドを実行する
APlayerController::ConsoleCommand関数で文字列リテラルのコンソールコマンドを実行することができる。
コンパイル時「Function parameter: 'Param' conflicts with previously defined field in 'ClassName'」と怒られる
UFUNCTIONの仮引数名Paramと、そのUFUNCTIONを定義しているクラスまたは親クラスClassNameのメンバ変数名が被っていると表題のように怒られる。
UFUNCTIONをメンバ変数より後ろで宣言すると、なぜかエラーは解消する。
class NG { UPROPERTY() FString Hoge; UFUNCTION() void SetHoge(FString Hoge); // ここでビルドエラー }; class OK { UFUNCTION() void SetHoge(FString Hoge); // なぜか通る UPROPERTY() FString Hoge; };
UFUNCTIONにデフォルト引数を持たせる
UFUNCTIONのmetaでデフォルト引数が設定できる。void Func(VarType Arg)という関数があったとして、VarTypeが…
- 「プリミティブ型」の場合
- meta=(Arg=“デフォルト値”)
- 「ユーザー定義型」の場合
- meta=(AutoCreateRefTerm=“Arg”) ※多分VarTypeのデフォルトコンストラクタを指定した事になる
Blueprint
misc
DataTableでFNameのデータが途中で切れて正しくインポートされない
データが英数字のみで構成されており、かつ _ - + . / : の何れかの文字を含むと、その文字の場所でデータが切れる事がある。FNameの制限というか仕様?っぽい。
正しくインポートするには三重ダブルクオーテーションで囲む必要がある。
詳しい条件はソースコードのそれっぽい所を参照の事(当該箇所を明示して良いのかわからんので一応伏せておく)。NamePropertyを作ってる場所なのでDataTableに限らずアセットに含まれる全てのFNameに当てはまりそうな気がする…