虚幻引擎5 GAS开发俯视角RPG游戏 P06-29 属性信息委托

1.在BroadcastInitialValues函数里,我们把属性集里的属性广播出去

(1)建立动态多播委托:

cpp 复制代码
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAttributeInfoSignature, const FAttributeInfo&, Info);
cpp 复制代码
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, Category="CC|GAS|Attributes")
	FOnAttributeInfoSignature OnAttributeInfoSignature;
	

(2)创建一个出数据资产:

cpp 复制代码
protected:
	UPROPERTY(EditDefaultsOnly, Category="CC|GAS|Attributes")
	TObjectPtr<UCC_AttributeInfo> AttributeInfo;

2.当Info里的标签等于Attributes_Primary_Strength时,我们把Strength值赋值给Info.Value

cpp 复制代码
void UCC_AttributeMenuWidgetController::BroadcastInitialValues()
{
	if (CC_AttributeSet == nullptr)
	{
		CC_AttributeSet = CastChecked<UCC_AttributeSet>(AttributeSet);
	}
	checkf(AttributeInfo, TEXT("在[%s]中没有配置AttributeInfo"), *GetNameSafe(this));
	FAttributeInfo Info = AttributeInfo->FindAttributeInfoFromTag(CC_GameplayTags::Attributes_Primary_Strength);
	Info.AttributeValue = CC_AttributeSet->GetStrength();
	
	OnAttributeInfoSignature.Broadcast(Info);
}

3.配置资产:

4.调用函数:

Source/CC_Aura/Public/UI/WidgetController/CC_WidgetController.h:

效果:

力量出来了

相关推荐
rainbow6889几秒前
C++高性能框架Drogon:后端开发新标杆
c++
Q741_1472 分钟前
C++ 优先级队列 大小堆 模拟 力扣 703. 数据流中的第 K 大元素 每日一题
c++·算法·leetcode·优先级队列·
Yu_Lijing29 分钟前
网络复习篇——网络基础(一)
网络·c++·笔记
Bella的成长园地30 分钟前
为什么c++中的条件变量的 wait() 函数需要配合while 循环或谓词?
c++·面试
charlee4432 分钟前
为什么现代 C++ 库都用 PIMPL?一场关于封装、依赖与安全的演进
c++·智能指针·raii·pimpl·编译防火墙·封装设计
MSTcheng.42 分钟前
CANN ops-math算子的跨平台适配与硬件抽象层设计
c++·mfc
code monkey.43 分钟前
【Linux之旅】Linux 进程间通信(IPC)全解析:从管道到共享内存,吃透进程协作核心
linux·c++·ipc
薛定谔的猫喵喵1 小时前
基于C++ Qt的唐代诗歌查询系统设计与实现
c++·qt·sqlite
阿昭L1 小时前
C++异常处理机制反汇编(三):32位下的异常结构分析
c++·windows·逆向工程
Cinema KI1 小时前
C++11(下) 入门三部曲终章(基础篇):夯实语法,解锁基础编程能力
开发语言·c++