GameplayEffects
Attributes(属性)和Gameplay Tags(游戏标签)分别代表游戏中实体的特性和标识。
Attributes(属性):Attributes是用来表示游戏中实体的特性或属性的值,例如生命值、法力值、速度等。它们可以是浮点数(如生命值、法力值)、整数(如等级)、布尔值(如是否存活)等。Attributes通常被用于描述实体的状态或特征,并且可以被Gameplay Effects所修改。
Gameplay Tags(游戏标签):Gameplay Tags是一种用来标识实体的特征或属性的方式。它们可以被用来对实体进行分类、区分和描述,例如对不同类型的角色、武器、技能等进行分类。Gameplay Tags通常用于确定Gameplay Effects的影响对象,或者作为条件来触发特定的行为。例如,可以使用Gameplay Tags来标识一个技能只对特定类型的角色有效,或者一个Buff只对具有特定标签的实体生效。
在Gameplay Effects内有以下几个规定
- 只有数据
- 不要直接派生自 UGameplayEffect 类来创建自定义的游戏效果。相反,应该使用 UGameplayEffectSpec 或 UGameplayEffectSpecHandle 来创建和管理游戏效果的实例。
- 通过Modifiers(修改器)以及Executions(执行)来完成改变
其中分为三块
Modifier Op 修改操作(Modifier Operation)
在游戏中,特别是在UE5中,"Modifier Op"通常用于描述一种对某种数值进行修改或操作的方式。这些修改操作可以应用于游戏中的各种属性、状态或效果,以实现对游戏逻辑和玩法的调整和控制。
- 加法(Add):将一个固定值或另一个属性的值添加到目标属性上。
- 减法(Subtract):从目标属性中减去一个固定值或另一个属性的值。
- 乘法(Multiply):将目标属性乘以一个固定值或另一个属性的值。
- 除法(Divide):将目标属性除以一个固定值或另一个属性的值。
- 设置(Set):将目标属性设置为一个固定值或另一个属性的值。
- 最小化(Minimize):将目标属性设置为目标属性当前值和一个固定值或另一个属性的值之间的较小值。
- 最大化(Maximize):将目标属性设置为目标属性当前值和一个固定值或另一个属性的值之间的较大值。
- 绝对值(Absolute):将目标属性的值设为其绝对值。
- 取反(Negate):将目标属性的值取反。
这些Modifier Op通常在Gameplay Effects中的Effect Spec(效果规范)或Modifier Spec(修改规范)中定义
Magnitude Calculation Type(大小计算类型)
"Magnitude Calculation Type"(大小计算类型)包括四种不同的计算方式:Scalable Float(可扩展浮点数)、Attribute Based(基于属性)、Custom Calculation Class(自定义计算类)和 Set by Caller(由调用者设置)。
- Scalable Float
(可扩展浮点数):这种计算类型使用一个可调节的浮点数作为其大小的基础。这个浮点数可以在设计效果时进行调整,以实现不同情况下的不同效果大小。
- Attribute Based
(基于属性):这种计算类型根据一个或多个属性的数值来计算效果的大小。属性的数值可能会随着游戏的进行而变化,因此效果的大小也会相应地改变。
- Custom Calculation Class
(自定义计算类):这种计算类型使用一个自定义的计算类来确定效果的大小。开发人员可以编写自己的计算逻辑,根据游戏中的特定条件和规则来确定效果的大小。
- Set by Caller
(由调用者设置):这种计算类型允许调用者在调用效果时直接设置效果的大小,而不需要使用任何特定的计算逻辑。这种方式通常用于特定情况下需要精确控制效果大小的情况。
Executions
"Executions"(执行)指定了在应用游戏效果时要执行的具体步骤或阶段。这些执行阶段包括:
- Gameplay Execution
(游戏执行):指定了在游戏中执行效果时要采取的操作。这可能包括修改属性、应用状态效果、触发事件等。游戏执行阶段通常与游戏逻辑紧密相关,用于处理游戏中的实际效果。
- Effect Execution
(效果执行):指定了在应用效果时要执行的操作。这可能包括播放特效、显示界面提示、触发声音等与效果展示相关的操作。效果执行阶段通常用于增强玩家的视觉和听觉体验。
- Execution
(执行):指定了在执行效果时要执行的操作。这可能包括执行特定的计算逻辑、调用其他函数或方法等。执行执行阶段通常用于实现效果的具体逻辑和功能。
- Calculation Execution
(计算执行):指定了在计算效果大小或其他参数时要执行的操作。这可能包括执行数学运算、查询数据库、调用外部服务等。计算执行阶段通常用于确定效果的具体数值和属性。
Duration Policy
"Duration Policy"(持续时间策略)指定了游戏效果的持续时间类型。这些策略包括:
- Instant
(即时):效果立即生效,然后立即结束。这意味着效果没有持续时间,一旦应用,立即产生效果,然后立即结束。
- Has Duration
(有持续时间):效果具有指定的持续时间,在这段时间内会持续产生影响。在持续时间结束之后,效果会自动消失或被移除。
- Infinite
(无限):效果没有持续时间限制,会持续产生影响直到被手动移除或条件不再满足。这种类型的效果通常用于表示永久性的状态或效果,如永久提升属性或应用永久性的状态效果。
Stacking
"Stacking"(堆叠)指的是在游戏中某种效果可以重复应用多次,每次应用都会增加效果的影响或持续时间。堆叠的效果通常用于表示叠加性的影响,例如增益效果或减益效果,它们在应用多次后会叠加在一起,产生更强大的影响。
Add Gameplay Tags
"Add Gameplay Tags"(添加游戏标签)是指在游戏开发中向角色、物体或者其他游戏实体添加标签,以便在游戏逻辑中对其进行识别、分类或处理。游戏标签通常用于描述实体的属性、状态或所属类别,可以在游戏中方便地进行检索、筛选或执行相应的逻辑操作。
Grant Abilities
"Grant Abilities" 意味着给予游戏中的角色或实体一系列的能力。这些能力可能包括移动、攻击、施放法术、使用道具等等,通过赋予能力,游戏角色或实体可以执行特定的行为或操作,从而影响游戏的进行和玩家的体验。Grant Abilities通常是通过游戏系统或者逻辑来触发,并且可以根据游戏的需求进行动态的控制和管理。
在UE5内有一种轻便的游戏数值Gameplay Effect Spec用来处理