UE4笔记-003-使用C++进行AnimNotify的编写

UE4笔记-003-使用C++进行AnimNotify的编写


基本说明

承接之前使用C++编写的AnimInstance,AnimationBlueprint一个很重要的功能就时响应动画事件,比如打击帧,伤害帧,Step音效,特效等等,用蓝图实现自不必说,简单到不行,不过既然已经用C++实现了AnimationBlueprint,那怎么能少得了AnimNotify呢?

要点说明

  1. AnimationBlueprint继承自AnimInstance。
  2. AnimNotify的名称为AnimNotify_XXX,这点和UE4内部实现有关,其实在蓝图中也能看出来。
    蓝图中的AnimNotify
    UE4内部的AnimNotify

步骤说明

其实也就一个要点,就是实现AnimNotify的函数一定要加上 UFUNCTION() 标志,否则的话在Animation中找不到这个AnimNotify,而且也无法实现具体的内容。

  1. 首先,我们在AnimaInstance中创建一个两个函数:
//MyAnimaInstance.h
	UFUNCTION()
	void AnimNotify_Attack(UAnimNotify * Notify);
	void AnimNotify_Walk(UAnimNotify * Notify);

//MyAnimaInstance.cpp
void UMyAnimInstance::AnimNotify_Walk(UAnimNotify * Notify)
{
	//UE_LOG(LogTemp, Log, TEXT("RunNotify."));
	if (TPCPPDemoCharacterMain)
	{
		UE_LOG(LogTemp, Warning, TEXT("AnimNotify_Walk"));
	}
	else
	{
		UE_LOG(LogTemp, Warning, TEXT("MyAnimInstance.TPCPPDemoCharacterMain is null"));
	}
}

void UMyAnimInstance::AnimNotify_Attack(UAnimNotify * Notify)
{
	//UE_LOG(LogTemp, Log, TEXT("RunNotify."));
	if (TPCPPDemoCharacterMain)
	{
		UE_LOG(LogTemp, Warning, TEXT("AnimNotify_Attack"));
	}
	else
	{
		UE_LOG(LogTemp, Warning, TEXT("MyAnimInstance.TPCPPDemoCharacterMain is null"));
	}
}

  1. 编译完成之后,直接创建一个AnimationBlueprint继承自我们自己的AnimaInstance,然后去新建两个Animation Notifies:
    Animation Notifies
  2. 这时可以发现,只有Attack会正常响应,而Walk是没有反应的,这就是因为没有加 UFUNCTION() ,只要添加上这个标志,Walk就可以正常反应了。

参考文章

ue4中动画通知的几种方式
(UE4 4.20)UE4 继承AnimNotify创建自定义动画通知事件(结合PoseableMeshComponent实现技能残影效果)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值