物品属性为物品固有属性,包含固定属性与可变属性,例如物品拥有耐久,则需要物品添加耐久的固定与可变属性
固定属性(UItemAttribute_Stats):用于储存一些固定的属性数据,例如最大耐久,制作所需材料,网格体等数据
可变属性(UItemMutableAttribute):存放可变的数据,例如当前耐久、当前弹药剩余数量与当前强化信息等
固定属性无需进行网络复制,可变属性会参与网络复制,并且已实现序列化
所有属性均可在蓝图中实现继承修改
可变属性需要实现一个Replication函数,其中用于将属性从一个属性(ItemBuildInfo中)复制到对应物品可变属性中,其中只需要将Other的变量写入到对应变量中即可
例如(C++):
virtual void Replication_Implementation(UItemMutableAttribute* Other) override {
UItemMutableAttribute_Durability* OtherAttribute = Cast<UItemMutableAttribute_Durability>(Other);
Durability = OtherAttribute->Durability;
bIsBreak = OtherAttribute->bIsBreak;
}
可变属性:
UItemMutableAttribute | 可变属性 |
---|---|
Replication | 复制函数,在此实现从BuildInfo中复制到对应物品可变属性的函数 |
UItemMutableAttribute_Durability | 耐久可变属性 |
Durability | 当前耐久 |
bIsBreak | 是否已毁坏 |
UItemMutableAttribute_LauncherWeapon | 发射器可变属性,例如弓、枪等 |
AmmoClass | 弹药物品基础(弹药类型) |
ClipAmmo | 剩余弹药,该武器剩余的弹药(弹夹中的弹药),不计算库存中的物品 |
UItemMutableAttribute_Enhance | 强化可变属性 |
StarRating | 当前星级 |
StatPoints | 强化点数数组,其中储存强化的加成数值 |
ExtraStatPoints | 特殊强化点数数组,储存非玩家属性的强化,例如强化物品耐久 |
固定属性:
UItemAttribute | 固定属性 |
---|---|
AttributeType | 属性类型,EItemAttributeType |
MutableAttribute | 创建的可变属性 |
UItemAttribute_Enhance | 强化固定属性 |
bManualEnhance | 允许主动强化,例如物品需要玩家在强化台使用材料进行强化,非系统 |
MaxStarRating | 最大强化星级(次数) |
EnhanceTable | 强化平台,例如工作台、强化台 |
EnhanceResource | 强化所需材料(基础) |
EnhanceResourcePow | 强化材料用量指数 算法:Resource = Default + Default * StarRating ^ EnhanceResourcePow),按星级调节强化材料用量,不逐级增加材料则填写1.f |
EnhancementSuccessProbability | 强化成功的几率,失败时也会消耗材料 |
EnhancementFailureBreakProbability | 强化失败后毁坏几率,0到1, 0为不毁坏 |
bRemoveAfterBreak | 强化失败后毁坏后直接移除,false则为耐久归0,true则为 物品消失 |
bAllowAppointEnhanceStat | 允许玩家指定属性进行强化,例如玩家只强化武器的攻击力,不进行随机强化则填写true,也可以开启此功能指定属性ID -1 来进行随机强化 |
EnhanceStats | 强化基础属性数组(每次强化其中一项) |
EnhanceExtraStats | 特殊强化基础属性,例如耐久 |
强化说明 | 每次强化属性列表中的其中一项,按最大最小强化倍率随机生成一个强化倍率并添加到强化可变属性列表中 强化属性算法: 原属性值* 基础属性倍率 * 强化倍率 平衡性调整可调整原属性值与基础属性倍率, 原属性值影响未强化的物品与强化后的物品属性 基础属性倍率则只影响强化后的物品属性 |
FItemEnhance/FItemExtraEnhance(结构) | |
StatType | 属性类型 |
BaseMultiply | 基础属性倍率 |
ProbabilityWeight | 几率权重,随机强化使用 |
MinEnhanceMultiply | 最小强化倍率 |
MaxEnhanceMultiply | 最大强化倍率 |
UItemAttribute_Equip | 装备固定属性,包含装备栏与快捷栏 |
EquipSlotType | 装备插槽类型 |
ItemActorClass | 物品子实体类型,用于生成武器等实体,衣服等外观不在此设置 |
UItemAttribute_RequiredLimit | 限制固定属性,用于限制玩家等级装备穿戴等 |
MinLevel | 最小等级 |
UItemAttribute_Stats | 装备数值固定属性 |
Stats | 属性数组 |
bApplyStatsWhenEquip | 在装备时应用到状态组件中,例如衣服装备到装备栏则增加属性,脱下减去属性,快捷栏则不会做任何操作 |
UItemAttribute_Durablity | 耐久固定属性 |
MaxDurability | 最大耐久 |
bCanDecay | 可否腐坏,一定时间后物品腐坏无法使用或移除 |
DecaySecond | 腐坏时间,单位秒,一次只会腐坏一个物品数量,腐坏后剩余的物品耐久将会重置 |
DecayGiveItem | 腐坏后给予物品,例如肉腐坏后给予玩家腐肉物品 |
bDisableRemoveAfterDecay | 腐坏后是否移除物品,例如带有腐坏时间的武器,坏掉后能够进行修理,但使用此 功能将无法在腐坏时给予DecayGiveItem |
UItemAttribute_StaticMesh | 静态网格体固定属性 |
StaticMeshs | 静态网格体数组,用于给物品添加静态网格体,例如武器 |
UItemAttribute_SkeletalMesh | 骨骼网格体固定属性 |
SkeletalMeshs | 骨骼网格体组件,用于给物品添加骨骼网格体,例如盔甲 |
UItemAttribute_Use | 使用固定属性,例如肉能够食用 |
UseType | 使用类型 Delegate 委托中自行实现 GiveBuff 给予BUFF ModifyStatus 增加属性数值,例如血瓶使用后回血或食物增加饥饿,此模式为快速回复,需要增加使用CD,如需缓慢恢复请使用GiveBuff模式 |
UseColdDown | 使用冷却时间 |
ColdDownGroup | 冷却分组,例如大小血瓶使用同一个冷却CD,则此项设置为相同名称即可 |
ModifyStats | 增加属性数值列表,ModifyStatus模式下使用 |
GiveBuff | 增加BUFF,GiveBuff模式下使用 |
UseMode | 使用模式,用于播放音效与动画使用, 需要委托库存组件->OnItemUseNotify |
UItemAttribute_Craft | 制作固定属性 |
Resource | 制作一次所需材料 |
GiveQuantity | 制作一次给予多少个物品 |
ExtraItem | 制作一次给予额外物品 |
CraftTable | 制作平台,例如工作台、机床 |
CraftTime | 制作所需时间 |
CraftGroup | 制作分组,用于UI分组 |
bCanRepair | 可否修理,修理使用材料会根据当前耐久进行变化,最低修理一次消耗材料每样1个 |
RepairConsumptionPercentage | 修复所需材料倍率,默认0.5,修复一次毁坏的物品只需要制作材料的一半 |
bUseCustomRepairResource | 使用自定义材料修复物品,使用此选项则不使用RepairConsumptionPercentage,并且不计算当前耐久度,例如修复武器每次消耗一个磨刀石 |
CustomRepairResource | 自定义修复材料 |
UItemAttribute_Weapon | 武器固定属性 |
bUseAmmunition | 带有弹夹,可储存子弹 |
AvailableAmmunition | 允许的武器弹药类型 |
UItemAttribute_Projectile | 发射物固定属性,例如箭矢物品 |
ProjectileClass | 发射物类型,APrimalProjectile |