1.在Combo能力类里.创建存储蒙太奇实例的指针变量
Source/Crunch/Public/GAS/GameplayAbility/GA_Combo.h
cpp
private:
UPROPERTY(EditDefaultsOnly, Category="Animation|Montage")
UAnimMontage* ComboMontage; //连招蒙太奇
2.ActivateAbility方法里,满足条件时,播放蒙太奇:
Source/Crunch/Private/GAS/GameplayAbility/GA_Combo.cpp
cpp
void UGA_Combo::ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData)
{
Super::ActivateAbility(Handle, ActorInfo, ActivationInfo, TriggerEventData);
// if (!CommitAbility(Handle, ActorInfo, ActivationInfo))
if (!K2_CommitAbility())
{
// EndAbility(Handle, ActorInfo, ActivationInfo, true, false);
K2_EndAbility();
return;
}
//有权限或者预测键时,播放蒙太奇
if (HasAuthorityOrPredictionKey(ActorInfo, &ActivationInfo))
{
// checkf(ComboMontage, TEXT("ComboMontage 是空的!"));
UAbilityTask_PlayMontageAndWait* PlayComboMontageTask = UAbilityTask_PlayMontageAndWait::CreatePlayMontageAndWaitProxy(this, NAME_None, ComboMontage);
//动态结束能力
PlayComboMontageTask->OnBlendOut.AddDynamic(this, &UGA_Combo::K2_EndAbility);
PlayComboMontageTask->OnCancelled.AddDynamic(this, &UGA_Combo::K2_EndAbility);
PlayComboMontageTask->OnCompleted.AddDynamic(this, &UGA_Combo::K2_EndAbility);
PlayComboMontageTask->OnInterrupted.AddDynamic(this, &UGA_Combo::K2_EndAbility);
//执行任务
PlayComboMontageTask->ReadyForActivation();
}
}
代码功能概述
这段代码实现了UGA_Combo类中连招技能的激活逻辑,主要包含以下核心功能:
-
能力激活的基类调用与验证
-
蒙太奇动画的权限控制与播放
-
动画状态的事件响应处理
关键流程解析
-
能力激活与验证
-
调用父类ActivateAbility方法完成基础激活
-
通过K2_CommitAbility()验证能力有效性,失败则立即终止
-
-
动画播放控制
-
权限检查:HasAuthorityOrPredictionKey确保只有拥有权限或预测键的客户端能播放
-
任务创建:通过UAbilityTask_PlayMontageAndWait创建异步蒙太奇播放任务
-
事件绑定:为动画的BlendOut/Cancelled/Completed/Interrupted四种状态绑定K2_EndAbility回调
-
-
异常处理机制
-
所有异常状态都会触发能力终止
-
通过动态代理实现灵活的事件响应
-
技术要点说明
-
预测性动画处理
-
使用PredictionKey支持客户端预测动画
-
网络同步时通过Authority检查确保一致性
-
-
任务生命周期管理
-
蒙太奇任务与能力实例绑定
-
任务就绪后调用ReadyForActivation()启动执行
-
-
设计模式应用
-
观察者模式:通过事件回调处理动画状态
-
策略模式:通过基类方法实现多态调用
-
优化建议
-
可添加蒙太奇播放前的资源检查
-
考虑添加动画播放进度回调
-
可扩展为支持多段连招的动画序列
3.创建蓝图连击能力:

修改玩家角色类的游戏能力:


4.创建动画蒙太奇


角色动画蓝图中,控制绑定之前,建立默认插槽

5.连击能力中,添加连击蒙太奇:
