本文系笔者的实习生分享会内容预备兼GameplayAbilities的初学者教程。

本文适合已有四十天UE4开发经验的初学者。

参考资料:https://wiki.unrealengine.com/GameplayAbilities_and_You#Introduction

简介(用有道词典机器翻译得到的简介,原文是上面的连接):

那么,什么是GameplayAbility ?

基本上,他们就像你在Dota或等价游戏中所拥有的能力。你可以投一个火球,这个火球击中一个玩家,爆炸(造成一定数量的伤害),并将爆炸范围内的每一个人都设置为火灾(随时间而造成的伤害)。与此同时,投火球的球员失去一些法力,并被冷却。

你可以使用Epic的GameplayAbility插件来完成所有这些事情。这个模块很难让你的头脑清醒,但是一旦你知道它们有多么强大,以及如何恰当地利用它们,它们就能让你的生活变得更加轻松。

但是为什么要在自己的系统上使用这个呢?

如果你的游戏需要一种强大的技能、浅黄色和属性系统,可以很容易扩展和疯狂的复制,那么游戏能力就会派上用场。这对于在多玩家RPG上使用很多技能/类或者甚至是MOBA的人来说是很神奇的,但是你可以在任何你想要的游戏中使用这个系统。主要的问题是它不是最容易理解的,相当大的,可能会在你的道路上有一点点距离,你离这个多玩家的RPG理想太远了,所以不是每一场游戏都能得到相同的里程。

那听起来像是个梦,但我在哪儿能得到它呢?

嗯,首先,GameplayAbilities代码模块,用于被整合到UE4的来源,但由于当前版本(4.15,也就是说,来自未来的人)被移动到一个单独的插件,交付与虚幻引擎,所以它可能不带走空间在你的游戏如果不使用系统。这个系统实际上并不是一个内置的引擎功能,但实际上,它已经被从Paragon和Fortnite的开发者那里得到了,以供第三方享用。不幸的是,由于这些独特的环境,整个模块是相当混乱的,糟糕的(阅读:几乎没有,你最好的选择是代码注释,即使是只有一半的时间)文档记录,很少更新和清理。

也不是100%的蓝图,部分,但不是全部,由于很多系统滥用很多引擎诡计和魔法以及他们所做的工作,如果你从来没有接触过c++ UE4的上下文中,您可能想要回头,也许做一个教程,因为本教程将让糟糕的第一次学习体验。

换句话说,这是一种完全的“臀部疼痛”的感觉,让你的脑袋到处都是,但这就是本指南来帮助你的地方。Epic开发者戴夫·拉蒂(Dave Ratti)有一个例子,GitHub项目通过一些基本的例子来帮助你开始,但忽略了细线,并进行了广泛的笔触。然而,这个项目本身是相当隐蔽的,而且(当时)并没有真正出现在谷歌或任何真正的关于游戏功能插件的搜索中,所以它没有像一个全面的指南那样有帮助。而且,现在游戏的标签已经被默认地集成到编辑器中(一个系统的游戏能力本身在每个角落都可以使用,扮演游戏能力的骨干),设置从来没有那么容易!

尽管如此,我们还是开始吧。

上述Github项目其实是没有的,链接已失效。

第一步:

第二步:

第三步:

第四步:它会提示重启,重启即可。同时请注意VS方面需要build:

说明:我做对了吗?如果你看到了下面这两个东西,就说明操作正确。

第五步:

选择上面的GameplayAbilityBP蓝图,然后

第六步:打开刚刚新建的GA(GameplayAbility)蓝图,然后helloWorld一下:

编译保存(如果你连如何新建节点和编译保存都不知道,请先去自学更加基础的入门内容)。

第七步:这一步是为了注册我们用到的插件。

VS中双击这个文件:

修改代码:

▼代码开始

        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay"
//原本代码中只有这一行
, "GameplayAbilities"
//这一行是新增的,表示注册GA插件
});

▲代码结束

第八步:

打开模板中自带的Character文件:

第九步:

修改代码如:

#include "CoreMinimal.h"
#include "GameFramework/Character.h" #include "AbilitySystemInterface.h"
//改动1:添加头文件 #include "GATutCharacter.generated.h" UCLASS(config=Game)
class AGATutCharacter : public ACharacter
,public IAbilitySystemInterface
//改动2:继承此接口
{
GENERATED_BODY() /** Camera boom positioning the camera behind the character */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true"))
class USpringArmComponent* CameraBoom; /** Follow camera */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true"))
class UCameraComponent* FollowCamera; //改动3:添加一个Abi组件
//BlueprintReadOnly的内容其实是不允许写在private区中的,如果写在private区且要蓝图可读,那么需要写上meta=(AllowPrivateAccess="true")
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = GameplayAbilities, meta = (AllowPrivateAccess = "true"))
class UAbilitySystemComponent* AbilitySystem;

由于代码过长,所以中间的就不写了,除了上面三处改动以外,还需要再public域中加入:

//改动4:添加一个返回此组件的方法

UAbilitySystemComponent* GetAbilitySystemComponent()const override;

说明:VS里面有很多爆红,不要管!

最后一步:代码编译。如果编译成功,那么本节的教程完成。目前还没有helloWorld。

原创声明:本文系小江村儿的文杰原创,若有参考的资料必在本文中给出。

2017年7月12日14:51:52

Unreal Engine 4(虚幻UE4) GameplayAbilities插件入门教程(一)的更多相关文章

  1. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(三)技能标签(Ability Tags)

    本教程参考了https://wiki.unrealengine.com/GameplayAbilities_and_You,如果没有学习前两篇教程,请前往学习. GameplayAbilities插件 ...

  2. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(二)

    我们接着学习.如果没有学习第一篇,请前往学习. 由于GameplayAbilities插件基本上没有资料(除了前面提供的那篇Dave的博文以外,再无资料,有迹象表明Dave是这个插件的开发者). 这个 ...

  3. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(四)技能屏蔽和简单的Buff等

    本节内容继续上一节教程的内容(如果没有看过前面的教程,请前往学习),不会讲太难的新东西,而是继续探究技能标签(Abiilty Tags)的内容.先来一道开胃菜. 第1.1步: 将上一次的召唤冰龙中的C ...

  4. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

    本节及后面的内容将会探索更加有意思的内容,更加逼近实际的使用的内容.我们本节内容不难,讲的是释放Ability时的信息传递: 第一步:创建一个GA称为GA_AOE_BlindVengeance,复仇忌 ...

  5. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(六)GameplayEffect的级别设置

    本节的内容不难,权当是复习.如果没有完成前面的教程,请前往学习. 第一步:用一个csv文件表示级别数据,下图中的Hurt随级别1~7表示其损伤值在1~7级别时分别是-7,-14,-20等.写好之后关闭 ...

  6. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(五)技能属性集(AttributeSet)

    如果没有完成前面的教程,请前往学习.先上一段理论介绍(源于https://wiki.unrealengine.com/GameplayAbilities_and_You#GameplayTasks): ...

  7. Unreal Engine 4 Radiant UI 插件入门教程(二)

    本篇章前提要求:在UE4上安装了Radiant UI插件.如果没有安装,请找其它教程(或者是笔者的其它的教程,目前正在写). 本教程的目的:探讨如何从网页元素中调用蓝图中的内容: 第一步: 写一个网页 ...

  8. 使用 ADD-ON SDK 开发 基于 Html JQuery 和 CSS 的 firefox 插件入门教程1: 创建一个简单的 Add-on

    [本文转载自http://sixpoint.me/942/implementing-simple-addon/] 实现一个简单的插件 教程的这个部分带你使用 SDK 来实现, 运行并打包一个插件. 这 ...

  9. [UE4]GameplayAbilities,技能系统插件

    Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等   Unreal Engine 4(虚幻UE4)GameplayAbili ...

随机推荐

  1. CMT2300 收发一体 SUB 1G 支持灵活选频

    CMT2300A 是一款超低功耗,高性能,适用于各种140 至1020 MHz 无线应用的OOK,(G)FSK 射频收发器.它是CMOSTEK NextGenRFTM 射频产品线的一部分,这条产品线包 ...

  2. LiteIDE灰调配色方案

    说明 本文写于2017-04-03,使用LiteIDE X31(基于Qt 4.8.5),操作系统为Windows. 使用 LiteIDE下载后解压即可使用.配色方案的所有配置文件都位于liteide/ ...

  3. 虚拟机安装Android最详细教程

    虚拟机想必大家都听说过,有些同学还用过.虚拟机可以模拟出一个操作系统,基于物理机创建.可以模拟常见的 Windows,ubuntu等等. 在使用虚拟机的过程中,想必大家都遇到过一些棘手的问题,尤其是安 ...

  4. 点评阿里JAVA手册之异常日志(异常处理 日志规约 )

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:异常处理 日志规约 本文难度系数为一星(★) 本文为第三篇 ...

  5. 修改tomcat图标

    页面上加入: 1 <link rel="shortcut icon" href="favicon.ico" type="image/x-icon ...

  6. C++如何入门

    去 Visual Studiohttps://www.visualstudio.com/zh-hans/?rr=https%3A%2F%2Flink.zhihu.com%2F%3Ftarget%3Dh ...

  7. Python3.6_x86通过FFpmeg获取视频或音频的时长和分辨率

    前言 前段时间公司在做流媒体服务,与许多厂家合作拿了许多视频过来,现在要对这些视频文件进行整理,通过特殊的编码排列,获取他们的时长以及分辨率,这里我遇到一个大坑,请往下面看. # -*- coding ...

  8. 微信小程序多张图片上传

    微信小程序上传图片每次只能上传一张,所有很多朋友就会问想要多张图片上传怎么办? 首先,我们来看一看wx.chooseImage(object)和wx.uploadFile(OBJECT)这两个个api ...

  9. c++ 库函数返回的字符串指针是否需要手动释放

    #include <stdio.h> char * tmpnam(char *s); tmpnam函数返回一个不与任何已存在文件同名的有效文件名,如果字符串s不为空,文件名也会写入它.对t ...

  10. 使用FlashWavRecorder实现浏览器录制wav音频和上传音频文件,兼容IE8以上浏览器

    前言:本项目基于github开源插件实现,该插件使用flash实现,兼容IE8以上浏览器 感谢michalstocki的分享该项目,github项目地址:https://github.com/mich ...