任逍遥

 找回密码
 立即注册
查看: 15108|回复: 66

虚幻4RPG游戏角色技能系统使用流程(一)

    [复制链接]
  • TA的每日心情

    2019-8-30 13:42
  • 签到天数: 492 天

    连续签到: 8 天

    [LV.9]妙领天机

    14

    主题

    2976

    帖子

    2985

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2985
    发表于 2019-12-26 21:09:58 | 显示全部楼层 |阅读模式


    在虚幻RPG类型的项目开发中,程序员需要给游戏中的每一个角色实现不同的技能。简单的技能如角色发出的一次普攻、补充血量和魔法值,复杂的技能像英雄的Q、W、E技能,不同的游戏角色有千万种变化。
    当玩家通过按键或UI触发技能时会在程序中会产生一系列反应:比如释放一次攻击技能会消耗目标的血量和自身的魔法属性值,视觉表现上会产生粒子特效和Buffer特效,还需要播放一次攻击动画等等。




    游戏项目中技能系统的开发非常重要且工作量巨大,特别是在RPG类型的游戏中,技能系统要花费程序员的很多时间和精力。
    为了降低角色技能系统开发工作量,开发者可以考虑借鉴或使用虚幻引擎的技能系统组件(UAbilitySystemComponent),下面我以Epic平台的RPG游戏案例来说明如何使用这个系统。
    技能系统是虚幻引擎内置的功能模块,Epic官方自研项目中也在使用这个系统。这个系统给开发者的方便之处在于这个模块已经搭建好了一个基础框架,开发者可以在这个模块的基类上自定义类来扩展需要的功能。
    实现虚幻4技能系统需要开发者具备一些虚幻C++编程的知识,不了解的同学可以在官方文档中查阅相关编程的内容。




    实现思路:首先在C++工程中继承并自定义属性类、技能类、资源类、技能组件类、角色类、游戏模式类、游戏实例类、资源管理器类等,然后创建自定义类的蓝图版本,在蓝图中重写函数与实现技能释放逻辑。这样给角色添加技能组件后,就可以通过鼠标输入来触发技能的释放。不同的技能需要提前配置好与之关联的技能效果和数值,在释放过程出会触发产生这些效果。
    下面我们就开始讲解具体的实现过程。
    1.启用Plugins
    首先打开虚幻引擎,创建一个第三人称模板的C++项目,建议使用4.21及以上版本,我在这个演示案例中使用的是4.21版本,低版本的遇到过无法解决的bug。
    在虚幻编辑器的Edit菜单中选择Plugins,搜索gameplay,找到并启用下图所示的Plusgins,之后必须要重启虚幻引擎才可以继续。


    2.添加模组
    我们要使用的技能组件相关类包含在虚幻引擎特定的模组中,所以现在打开项目的ProjectName.Build.cs文件,在公开依赖模组中增加"GameplayAbilities","GameplayTags","GameplayTasks"。在这个演示案例中需要用到Slate,所以现在可以把"Slate","SlateCore"模组一起放进去。关掉VS,在项目文件夹中重新生成工程文件并打开,让VS重新加载所有文件。


    3.创建技能组件类
    技能系统组件类(UAbilitySystemComponent)是虚幻源码的一个组件类,有了这个类就可以在角色类中创建组件属性了。在项目中你可以从继承这个类开始,创建自定义的技能组件类。自定义类中可以声明一些函数。


    GetActiveAbilitiesWithTags(...)函数可以得到技能标签对应的可被激活技能(URPGGameplayAbility)并保存在数组中。GetActiveAbilitiesWithTags(...)函数的实现见下图:


    这个函数中调用了UAbilitySystemComponent中的GetActivatableGameplayAbilitySpecsByAllMatchingTags(...)函数,这个函数通过比较参数GameplayTags与可激活技能数组中技能的GameplayTags,收集到应该被激活技能(URPGGameplayAbility)对应的FGameplayAbilitySpec。FGameplayAbilitySpec是一个结构体,其中定义了技能(URPGGameplayAbility)的具体信息和状态。
    未完待续…

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    楼主热帖
  • TA的每日心情
    开心
    2019-8-25 08:48
  • 签到天数: 472 天

    连续签到: 3 天

    [LV.9]妙领天机

    10

    主题

    2892

    帖子

    2899

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2899
    发表于 2019-12-27 17:00:47 | 显示全部楼层
    我是个凑数的。。。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2019-8-30 12:58
  • 签到天数: 479 天

    连续签到: 14 天

    [LV.9]妙领天机

    1

    主题

    2917

    帖子

    2918

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2918
    发表于 2020-1-4 04:25:30 | 显示全部楼层
    楼主呀,,,您太有才了。。。
    回复

    使用道具 举报

  • TA的每日心情

    2019-8-30 19:41
  • 签到天数: 490 天

    连续签到: 6 天

    [LV.9]妙领天机

    7

    主题

    2920

    帖子

    2923

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2923
    发表于 2020-1-6 11:47:44 | 显示全部楼层
    不错 支持一个了
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-8-30 19:26
  • 签到天数: 457 天

    连续签到: 2 天

    [LV.9]妙领天机

    12

    主题

    2914

    帖子

    2926

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2926
    发表于 2020-1-8 00:24:28 | 显示全部楼层
    支持,赞一个
    回复

    使用道具 举报

  • TA的每日心情

    2019-8-30 04:33
  • 签到天数: 464 天

    连续签到: 5 天

    [LV.9]妙领天机

    6

    主题

    2934

    帖子

    2938

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2938
    发表于 2020-1-26 07:31:51 | 显示全部楼层
    楼下的接上。。。。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-8-30 02:28
  • 签到天数: 475 天

    连续签到: 2 天

    [LV.9]妙领天机

    8

    主题

    2946

    帖子

    2953

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2953
    发表于 2020-2-4 01:50:45 | 显示全部楼层
    路过 帮顶 嘿嘿
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2019-8-28 23:17
  • 签到天数: 463 天

    连续签到: 3 天

    [LV.9]妙领天机

    5

    主题

    2836

    帖子

    2840

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2840
    发表于 2020-2-15 23:52:34 | 显示全部楼层
    看起来不错
    回复

    使用道具 举报

  • TA的每日心情

    2019-8-29 08:52
  • 签到天数: 470 天

    连续签到: 4 天

    [LV.9]妙领天机

    1

    主题

    2940

    帖子

    2939

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2939
    发表于 2020-2-18 07:52:58 | 显示全部楼层
    围观 围观 沙发在哪里!!!
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-8-30 16:16
  • 签到天数: 458 天

    连续签到: 2 天

    [LV.9]妙领天机

    1

    主题

    2903

    帖子

    2905

    积分

    声名显赫

    Rank: 7Rank: 7Rank: 7

    积分
    2905
    发表于 2020-2-18 20:36:05 | 显示全部楼层
    呵呵,低调,低调!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|任逍遥

    GMT+8, 2024-4-29 22:40 , Processed in 0.101105 second(s), 50 queries .

    Powered by 任逍遥 X3.4

    Copyright © 2001-2023, Rxiaoyao Cloud.

    快速回复 返回顶部 返回列表