虚幻引擎5 GAS开发俯视角RPG游戏 P04-2:优化EffectActor类

摘要:本文介绍了在Unreal Engine中使用GAS系统实现通用效果Actor的优化过程。通过重构CC_EffectActor类,将硬编码内容改为蓝图可配置方式,并实现GameplayEffect的完整应用流程:1)获取目标ASC组件;2)创建效果上下文并设置来源;3)生成效果规格;4)应用效果到目标。具体实现了药瓶效果实例,通过TSubclassOf变量使蓝图可配置不同GameplayEffect。该方案提高了系统模块化程度,支持多种效果类型,为技能/物品系统开发提供了可复用的基础框架。

1.之前我们在EffectActor类里,硬编码了一些东西,为了使它更加通用/模块化,决定优化:

Source/CC_Aura/Public/Actor/CC_EffectActor.h:

// 版权归陈超所有

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "CC_EffectActor.generated.h"

class USphereComponent;
class UStaticMeshComponent;

UCLASS()
class CC_AURA_API ACC_EffectActor : public AActor
{
	GENERATED_BODY()
	
public:	
	ACC_EffectActor();

protected:
	virtual void BeginPlay() override;
	
	
};

Source/CC_Aura/Private/Actor/CC_EffectActor.cpp:

// 版权归陈超所有


#include "Actor/CC_EffectActor.h"

ACC_EffectActor::ACC_EffectActor()
{
 	// 将此参与者设置为每帧调用Tick()。如果你不需要它,你可以关闭它来提高性能。
	PrimaryActorTick.bCanEverTick = false;

	SetRootComponent(CreateDefaultSubobject<USceneComponent>("SceneRoot"));
}

// 在游戏开始或生成时调用
void ACC_EffectActor::BeginPlay()
{
	Super::BeginPlay();

}

2.把其他的东西都放在蓝图子类里:

(1)添加静态网格体

去除静态网格体碰撞:

(2)添加碰撞球体

(3)写碰撞事件:

3.在C++类里添加方法:给对象添加效果

(1)获取对象的GAS:

UAbilitySystemComponent* TargetAbilitySystemComponent = UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(TargetActor);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值