zoukankan      html  css  js  c++  java
  • Unreal Engine 4(虚幻UE4) GameplayAbilities插件入门教程(一)

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

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

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

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

    那么,什么是GameplayAbility ?

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

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

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

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

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

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

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

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

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

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

    第一步:

    第二步:

    第三步:

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

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

    第五步:

    选择上面的GameplayAbilityBP蓝图,然后

    第六步:打开刚刚新建的GAGameplayAbility)蓝图,然后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

     

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

    201771214:51:52

  • 相关阅读:
    linux安装JRE和Tomcat
    微信公众号授权登录
    linux Nginx设置多级域名
    bootstrap制作收藏夹导航
    js下拉菜单
    QQ授权登录
    centos7.6下安装LNMP环境(linux+nginx+mysql5.7+PHP)
    typora快捷键(转载)
    旋转魔方(2)-添加照片
    test
  • 原文地址:https://www.cnblogs.com/JackSamuel/p/7155500.html
Copyright © 2011-2022 走看看