「BindWidgetAnim」を使用する場合
.h
UCLASS()
class NIGHT_API UNT_Interact : public UUserWidget
{
GENERATED_BODY()
public:
void NativeConstruct() override;
private:
//BPのアニメーション名を「MoveAnime」と変数名と同じにする必要がある
UPROPERTY(Transient, meta = (BindWidgetAnim))
TObjectPtr<UWidgetAnimation> MoveAnime;
};
//============================
.cpp
void UNT_Interact::NativeConstruct()
{
//アニメーション開始
PlayAnimation(MoveAnime);
}
「変数名」と「アニメーション名」を完全一致しないとエラーが表示されるので注意してください
「BlueprintNativeEvent」を使用する場合
.h
UCLASS()
class NIGHT_API UNT_Interact : public UUserWidget
{
GENERATED_BODY()
public:
//Blueprintから中身を上書きする
UFUNCTION(BlueprintNativeEvent)
UWidgetAnimation* GetMoveAnime() const;
virtual UWidgetAnimation* GetMoveAnime_Implementation() const { return nullptr; }
void NativeConstruct() override;
private:
UPROPERTY()
TObjectPtr<UWidgetAnimation> MoveAnime;
};
//============================
.cpp
void UNT_Interact::NativeConstruct()
{
MoveAnime = GetMoveAnime();
if (MoveAnime)
{
//アニメーション開始
PlayAnimation(MoveAnime);
}
}
BPから関数をOverrideします。
自分はこの2つしか思いつきませんでした。
他に効率的な方法などがあったら教えてください。


