UAnimInstance#

UUserWidget和UMG一样,我们同样可以使用UAnimInstance来搭配动画蓝图使用

UCLASS()
class SHOOTERGAME_API UShooterTPPAnimInstance : public UAnimInstance
{
	GENERATED_BODY()
protected:
	virtual void NativeUninitializeAnimation() override;
	
	virtual void NativeInitializeAnimation() override;
	
	virtual void NativeBeginPlay() override;

	virtual void NativeUpdateAnimation(float DeltaSeconds) override;
	
	virtual void NativePostEvaluateAnimation() override;
};

这里简单介绍一下UAnimInstance初始化时的生命周期

在正常的游戏流程中

  • NativeUninitializeAnimation
  • NativeInitializeAnimation
  • NativeBeginPlay
  • 进入游戏循环 以下两个函数反复调用
  • NativeUpdateAnimation
  • NativePostEvaluateAnimation

相反的,如果只是编译成功或进行动画加载,那么会只会执行BeginPlay之前的函数

  • NativeUninitializeAnimation
  • NativeInitializeAnimation

如果是在动画蓝图界面中 那么会进入Tick循环,注意此时BeginPlay并不会被调用,BeginPlay只会在开始游戏进程的时候才会被调用

  • NativeUpdateAnimation
  • NativePostEvaluateAnimation

那么如此看来我们就可以在NativeInitializeAnimation()中进行一些属性的初始化,然后在NativeUpdateAnimation()去每帧更新