Gameplay技能系统

对Gameplay技能系统的高层次解读。

Windows
MacOS
Linux

Gameplay技能系统 是一个高度灵活的框架,可用于构建你可能会在RPG或MOBA游戏中看到的技能和属性类型。你可以构建可供游戏中的角色使用的动作或被动技能,使这些动作导致各种属性累积或损耗的状态效果,实现约束这些动作使用的"冷却"计时器或资源消耗,更改技能等级及每个技能等级的技能效果,激活粒子或音效,等等。简单来说,此系统可帮助你在任何现代RPG或MOBA游戏中设计、实现及高效关联各种游戏中的技能,既包括跳跃等简单技能,也包括你喜欢的角色的复杂技能集。

技能、任务、属性和效果

Gameplay技能(简称"技能")实为 UGameplayAbility 类的C++或蓝图子项。其定义C++代码或蓝图脚本中技能的实际作用,并建立处理技能的元素,如复制和实例化行为。

在定义技能的逻辑过程中,gameplay技能中的逻辑通常会调用一系列被称为 技能任务 异步编译块。技能任务衍生自抽象 UAbilityTask 类,以C++编写。其完成操作时,会基于最终结果频繁调用委托(C++中)或输出执行引脚(蓝图中)(例如,需要目标的技能需进行"瞄准"任务,将调用一个委托或输出引脚确认目标,并调用另一引脚取消技能)。

除Gameplay技能外,Gameplay技能系统还支持 Gameplay属性Gameplay效果。Gameplay属性是存储在 FGameplayAttribute 结构中的"浮点"值,将对游戏或Actor产生影响;其通常为生命值、体力、跳跃高度、攻击速度等值。Gameplay效果可即时或随时间改变Gameplay属性(通常称为"增益和减益")。例如,施魔法时减少魔法值,激活"冲刺"技能后提升移动速度,或在治疗药物的效力周期内逐渐恢复生命值。

与Gameplay技能系统交互的Actor须拥有 技能系统组件。此组件将激活技能、存储属性、更新效果,和处理Actor间的交互。启用Gameplay技能系统并创建包含技能系统组件的Actor后,便可创建技能并决定Actor的响应方式。

系统设置

由于Gameplay技能系统是一个插件,需要先启用才能使用。只需两步即可启用它:

  • 编辑(Edit) -> **插件(Plugins)** 窗口中启用Gameplay技能系统插件。
    GameplayAbilitySystem_Plugin_00.png

  • 要使用此系统的全部功能,添加"GameplayAbilities"、"GameplayTags"和"GameplayTasks"到项目的"(ProjectName).Build.cs"文件中的`PublicDependencyModuleNames`中。这很容易做到,只需找到公用模块列表:

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay" });

要使用Gameplay技能系统,将上述三个模块名称添加到花括号列表中的任意位置,如下所示:

PublicDependencyModuleNames.AddRange(new string[] { "GameplayAbilities", "GameplayTags", "GameplayTasks", "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay" });

技能系统组件是游戏中的角色访问Gameplay技能系统的主要接口。此组件管理Gameplay属性,运行Gameplay事件,存储Gameplay技能,甚至处理玩家输入到Gameplay技能激活、确认及取消命令的绑定。任何要与Gameplay技能系统交互的Actor都应具有技能系统组件。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback