Files
PHY/Source/PHY/Public/AbilitySystem/Attributes/PHYCoreAttributeSet.h
2026-04-26 01:30:00 +08:00

79 lines
2.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "AbilitySystem/Attributes/PHYAttributeSet.h"
#include "PHYCoreAttributeSet.generated.h"
/**
* @brief PHY 基础属性集,作为所有玩家和 AI 的通用根属性。
*/
UCLASS(BlueprintType)
class PHY_API UPHYCoreAttributeSet : public UAttributeSet
{
GENERATED_BODY()
public:
/** @brief 构造基础属性并读取默认配置。 */
UPHYCoreAttributeSet();
/** @brief 注册属性复制。 */
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
/** @brief 力量,影响物理攻击、格挡、破防和负重倾向。 */
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Strength, Category="PHY|Attributes|Core")
FGameplayAttributeData Strength;
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Strength);
/** @brief 灵巧,影响暴击、攻速、命中和闪避倾向。 */
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Dexterity, Category="PHY|Attributes|Core")
FGameplayAttributeData Dexterity;
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Dexterity);
/** @brief 体魄,影响生命、护甲、耐力和韧性倾向。 */
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Vitality, Category="PHY|Attributes|Core")
FGameplayAttributeData Vitality;
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Vitality);
/** @brief 智力,影响法术强度、法力和冷却缩减倾向。 */
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Intelligence, Category="PHY|Attributes|Core")
FGameplayAttributeData Intelligence;
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Intelligence);
/** @brief 精神,影响法力、魔法抗性和元素抗性倾向。 */
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Spirit, Category="PHY|Attributes|Core")
FGameplayAttributeData Spirit;
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Spirit);
/** @brief 感知,影响命中、暴击、弱点和穿透倾向。 */
UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_Perception, Category="PHY|Attributes|Core")
FGameplayAttributeData Perception;
PHY_ATTRIBUTE_ACCESSORS(UPHYCoreAttributeSet, Perception);
protected:
/** @brief 复制力量。 */
UFUNCTION()
void OnRep_Strength(const FGameplayAttributeData& OldValue);
/** @brief 复制灵巧。 */
UFUNCTION()
void OnRep_Dexterity(const FGameplayAttributeData& OldValue);
/** @brief 复制体魄。 */
UFUNCTION()
void OnRep_Vitality(const FGameplayAttributeData& OldValue);
/** @brief 复制智力。 */
UFUNCTION()
void OnRep_Intelligence(const FGameplayAttributeData& OldValue);
/** @brief 复制精神。 */
UFUNCTION()
void OnRep_Spirit(const FGameplayAttributeData& OldValue);
/** @brief 复制感知。 */
UFUNCTION()
void OnRep_Perception(const FGameplayAttributeData& OldValue);
};