【UE】GAS入门(一)创建Ability

这篇具有很好参考价值的文章主要介绍了【UE】GAS入门(一)创建Ability。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GameAbilitySystem入门记录(一)

0、建议准备工作

①下载Github上的GASDocumentation(UE 4.26.2)或UE商场中自带的ActionRPG项目(图一的两个项目)
②下载中文版文档


1、启用GAS

1.1 新建项目

本文主要用以学习记录。版本使用的是4.26.2。项目时间是2022.7.21。

【UE】GAS入门(一)创建Ability
【UE】GAS入门(一)创建Ability
【UE】GAS入门(一)创建Ability

1.2 启用GAS插件

【UE】GAS入门(一)创建Ability
【UE】GAS入门(一)创建Ability

1.3 验证GAS有效性

【UE】GAS入门(一)创建Ability
此处存有GameplayCue Editor的话说明启用成功
【UE】GAS入门(一)创建Ability
此处存在Gameplay Ability Blueprint的话,也说明已经启用成功

1.4 声明GAS项目

由于我们创建的是C++的UE项目

1.4.1 打开 xxxx.Build.cs

【UE】GAS入门(一)创建Ability
添加上述 3个 完成项目的GAS声明



2、能“HelloWorld”的Ability

万事皆有HelloWorld,GAS也不例外。

2.1 创建“能够HelloWorld”的Ability

【UE】GAS入门(一)创建Ability
【UE】GAS入门(一)创建Ability

在内容浏览器中,新建一个GA BP,命名为GA_testHello。
【UE】GAS入门(一)创建Ability
双击进入,添加一个PrintString作为Helloworld的动作
【UE】GAS入门(一)创建Ability
(此处print的是一个“Action”)

3、为Character启用ASC

GAS的最终目的就是让玩家发出技能,而玩家控制的便是——Character。因此需要为Character添加ASC(Ability System Component)。

3.1 从Character.h和Character.cpp入手

因为我们在1.1创建项目的时候已经选择了带有初学者包,也就是说项目创建之初便带有一个默认的Character。

【UE】GAS入门(一)创建Ability
打开VS项目,右侧的资源管理器就记载了我们的代码。其中,项目名+Character.h项目名+Character.cpp便是我们要添加ASC的Character。

3.2 修改Character.h

打开.h文件后,需要更改几处代码:
①头文件部分

#include "AbilitySystemInterface.h"
#include "AbilitySystemComponent.h"

注意,#include "learnUe_0720Character.generated.h"这个头文件必须在最后一个引用,否则会报错:
【UE】GAS入门(一)创建Ability
添加如下即可:
【UE】GAS入门(一)创建Ability


②添加IAbilitySystemInterface接口

【UE】GAS入门(一)创建Ability
在 .h文件的第一个Public中添加如下代码 声明ASC :

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = GameplayAbilities,meta = (AllowPrivateAccess = "true"))
	class UAbilitySystemComponent* AbilitySystem;
	
	UAbilitySystemComponent* GetAbilitySystemComponent()const override;

即如下图所示
【UE】GAS入门(一)创建Ability
添加完 .h文件,下一步当然是添加 .cpp文件


3.3 修改Character.cpp

①在文件的末尾添加如下代码:

UAbilitySystemComponent* AlearnUe_0720Character::GetAbilitySystemComponent() const
{
   
	return AbilitySystem;
}

该函数是用来实现 h文件中3.2最后添加的UAbilitySystemComponent* GetAbilitySystemComponent()const override;

此时,可以回到UE项目中编译一下,如果编译通过,那么可以继续。

如果编译成功,可以看到我们的Character上面多了ASC:
【UE】GAS入门(一)创建Ability文章来源地址https://www.toymoban.com/news/detail-433162.html

4、代码备份

4.1 Character.h

// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Character.h"
//添加引用
#include "AbilitySystemInterface.h"
#include "AbilitySystemComponent.h"
//最后引用
#include "learnUe_0720Character.generated.h"


UCLASS(config=Game)
class AlearnUe_0720Character : public ACharacter , public IAbilitySystemInterface  //修改:添加接口
{
   
	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;
public:
	AlearnUe_0720Character();
	
	//modi: 声明ASC		设置为Private后蓝图是无法读取的,因此需要meta设置为true才可以被蓝图看到
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = GameplayAbilities,meta = (AllowPrivateAccess = "true"))
	class UAbilitySystemComponent* AbilitySystem;

	//modi:添加一个返回此组件的方法
	UAbilitySystemComponent* GetAbilitySystemComponent()const override;

	/** Base turn rate, in deg/sec. Other scaling may affect final turn rate. */
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category=Camera)
	float BaseTurnRate;

	/** Base look up/down rate, in deg/sec. Other scaling may affect final rate. */
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category=Camera)
	float BaseLookUpRate;

protected:

	/** Resets HMD orientation in VR. */
	void OnResetVR();

	/** Called for forwards/backward input */
	void MoveForward(float Value);

	/** Called for side to side input */
	void MoveRight(float Value);

	/** 
	 * Called via input to turn at a given rate. 
	 * @param Rate	This is a normalized rate, i.e. 1.0 means 100% of desired turn rate
	 */
	void TurnAtRate(float Rate);

	/**
	 * Called via input to turn look up/down at a given rate. 
	 * @param Rate	This is a normalized rate, i.e. 1.0 means 100% of desired turn rate
	 */
	void LookUpAtRate(float Rate);

	/** Handler for when a touch input begins. */
	void TouchStarted(ETouchIndex::Type FingerIndex, FVector Location);

	/** Handler for when a touch input stops. */
	void TouchStopped(ETouchIndex::Type FingerIndex, FVector Location);

protected:
	// APawn interface
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
	// End of APawn interface

	//TWeakObjectPtr<class UGDAbilitySystemComponent> AbilitySystemComponent;

public:
	/** Returns CameraBoom subobject **/
	FORCEINLINE class USpringArmComponent* GetCameraBoom() const {
    return CameraBoom; }
	/** Returns FollowCamera subobject **/
	FORCEINLINE class UCameraComponent* GetFollowCamera() const {
    return FollowCamera; }

};


4.2 Character.cpp

// Copyright Epic Games, Inc. All Rights Reserved.


#include "learnUe_0720Character.h"
#include "HeadMountedDisplayFunctionLibrary.h"
#include "Camera/CameraComponent.h"
#include "Components/CapsuleComponent.h"
#

到了这里,关于【UE】GAS入门(一)创建Ability的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 7. UE5 RPG修改GAS的Attribute的值

    前面几节文章介绍了如何在角色身上添加AbilitySystemComponent和AttributeSet。并且还实现了给AttributeSet添加自定义属性。接下来,实现一下如何去修改角色身上的Attribute的值。 首先创建一个继承于Actor的c++类,actor是可以放置到场景中的基类。 创建一个静态模型组件,用来显示当前

    2024年01月18日
    浏览(41)
  • OpenHarmony 应用开发入门 (二、应用程序包结构理解及Ability的跳转,与Android的对比)

    在进行应用开发前,对程序的目录及包结构的理解是有必要的。如果之前有过android开发经验的,会发现OpenHarmony的应用开发也很简单,有很多概念是相似的。下面对比android分析总结下鸿蒙的应用程序包结构,以及鸿蒙对比android的诸多亮点。从这些亮点上看,可以毫不客气的

    2024年01月21日
    浏览(58)
  • ue4/5蓝图与c++混用基础入门的基础操作(适合有蓝图基础和c++基础的新手,创建自己的蓝图)

            首先是最开始的创建项目,用c++模式进行创建。         ue4:         ue5:  创建之后,两个都会自动为你打开vs,不过ue4.26要的是vs2019,ue5要的是vs2022,有时候打不开是缺少一些东西,这些东西在csdn里面可以查到,作者就不细讲了。 在ue5(4是一样的)中,我们可

    2023年04月12日
    浏览(52)
  • UE学习记录03----UE5.2 使用MVVM示例

    1.打开ue5.2新建C++项目 2.项目中通过类导向新建C++类,父类选择为UMVVMViewModelBase,创建完成会自动打开vs   3.在VS中对新建的类进行宏定义 使用  C++ 类向导  创建的类声明自动通过  UCLASS()  宏进行处理。  UCLASS()  宏使得引擎意识到这个类的存在,并且还可以同键盘修饰符结

    2024年02月11日
    浏览(36)
  • UE学习记录03----UE5.2 使用拖拽生成模型

    0.创建蓝图控件,自己想要展示的样子 1.侦测鼠标拖动  2.创建拖动操作 3.拖动结束时生成模型 3.1创建actor , 创建变量EntityMesh设为可编辑 生成Actor,创建变量EntityMesh设为可编辑  屏幕鼠标位置转化为3D场景位置  4.将texture设置为变量并设为可编辑;  5.在主界面初始化该拖动控

    2024年02月11日
    浏览(33)
  • OpenHarmony教程指南—Ability的启动模式

    本示例展示了在一个Stage模型中,实现standard、singleton、specified多种模式场景。 本实例参考开发指南 。 本实例需要使用aa工具 查看应用Ability 模式信息。 使用说明 1、standard模式: 1)进入首页,点击番茄,会新建一个番茄的Ability,展示番茄的详情; 2)在番茄的详情界面,点

    2024年03月09日
    浏览(31)
  • 《通过UE4/UE5的ProceduralMesh组件创建网格》

    一.介绍         因项目需求我接触到了ProceduralMesh组件,项目需要做淹没分析推演,根据json数据来在UE中推演出漫长淹没过程。这意味着数据是庞大的那么该怎么生成这个巨大的网格面呢。一开始我对这个组件的领悟不是很深刻,一个面是由四个坐标点组成,在最初的测试过

    2024年02月15日
    浏览(44)
  • UE4 材质实操记录

    TexCoord的R通道是从左到右的递增量,G通道是从上到下的递增量,R通道减去0.5,那么左边就是【-0.5~0】区间,所以左边为全黑,Abs取绝对值,就达到一个两边向中间的一个递减的效果,G通道同理,相乘得到一个X,Y为0.5向四周递增的效果。 在后面阶乘一个边缘渐弱的圆形数值,

    2024年02月02日
    浏览(57)
  • ue之C++ 创建Actor

    UE中创建Actor十分简单: 如下图: 点击New C++ Class就可以啦。但是点击之后会发生什么呢? 首先他会出现对话框,询问我们需要创建哪一种类型的Actor,在这里说明一下unreal中C++可以创建的东西大致分为两类,第一种是Class,另外一种就是Plugins,在这里我们新建的是class,类,

    2024年02月13日
    浏览(41)
  • UE4 创建自定义模块

    这篇文章是用 4.27 版本的引擎编写的。根据您阅读本文的时间,这些信息可能已经过时。 为了创建一个模块,我们必须做以下事情: 修改项目的 .uproject 文件以包含新模块 创建一个包含其他依赖项并包含私有和公共包含路径的模块构建文件 在我们的模块中创建至少一个类

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包