UE4 Tips

やあ

ただひたすら見つけたことを書いていくだけ。
ここ違うよとか、こうすればいいよとか教えていただけたら助かります。

目次

UnrealC++全般

GENERATED_UCLASS_BODYマクロを使うとBlueprintNativeEventでコンパイルエラーが起こる

------- 例 -------

UCLASS()
class HUGA_API AHogeChara : public ACharacter
{
    GENERATED_UCLASS_BODY()
public:
    UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
        void PiyoPiyo();
    /* _Implementationで関数はすでに本体を持っていますとコンパイルエラーが出る。 */
    void PiyoPiyo_Implementation(); 
}

------- 解決策 -------
GENERATED_UCLASS_BODYGENERATED_BODYマクロに変える。
目次に戻る

UE4 全般

StaticMeshにもソケットを作れる

StaticMeshアセットを開いて、
ウィンドウ→ソケットマネージャー→ソケット作成
f:id:pto8913:20201203130045p:plain

目次に戻る

あまりにも遠い場所でStaticMeshをSkeletalMeshにアタッチするとStaticMeshの挙動がおかしくなる

x: 1e6, y: 0, z: 1e7という座標でSkeletalMeshにStaticMeshをアタッチすると、StaticMeshががくがくと震えて気持ち悪い挙動になる。

解決策
z: 1e6にすると直った。

UMG

Constructの呼ばれるタイミング

pto8913.hatenablog.com

目次に戻る

WBPのConstructの前後に処理をしたい(C++)

Super::NativeConstruct()を呼び出した時点でWBPConstructが呼ばれるので、
WBPConstruct前に処理をしたい場合は

void UMyWidget::NativeConstruct()
{
    Super::NativeConstruct();
    
    /* ~ Any ~ */
}

WBPConstruct後に処理をしたい場合は

void UMyWidget::NativeConstruct()
{
    /* ~ Any ~ */
    
    Super::NativeConstruct();
}

目次に戻る

WBPのConstructの前後の処理をしたい(WBP)

前に処理をしたい場合はPreConstruct
後に処理をしたい場合はConstructの後ろにくっつけるだけ

目次に戻る

ListViewについて

f:id:pto8913:20210209145147p:plain
ListViewEntryWidgetClassに設定するWidget(ListViewEntryWidget)のTickFrequencyは必ずAutoにしておく必要がある。
f:id:pto8913:20210209145236p:plain
Neverにすると、エラーを吐いて1~2秒ほどフリーズする。
ListViewEntryWidgetのルートのVisibilityVisibleにしておく必要がある。
それ以外の場合だと、HoverClickedなどのイベントは呼ばれない。

目次に戻る

パッケージ化

プラグインを含んだBPプロジェクトをパッケージ化するとプロジェクトが開けない

プラグイン(多分C++のコミュニティプラグイン)を含んだBPプロジェクトをパッケージ化すると、
Plugin "PluginName" failed to load because module "PluginName" could not be found
というエラーが出る。

解決策
1. .uprojectファイルを右クリックして、Generate Visual Studio project filesをクリック。
f:id:pto8913:20201225180040p:plain

  1. 生成された.slnを開いて、Ctrl+Bでビルド。

  2. ビルドが終わったら再びパッケージ化してみる。

  3. 原因がこれだけならこれで終わるはずです。

目次に戻る