虚幻引擎(UE4)中重要的Class类

本文深入探讨了虚幻引擎4的GamePlay框架,涵盖了Actor、ActorComponent、PlayerController、AIController、Pawn、GameModeBase、HUD、World、GameInstance、PlayerState和GameStateBase等核心类。讲解了它们的用途、网络复制、生命循环和关键函数,为C++开发者提供了实用的指导。此外,还提到了UGamePlayStatics的作用和一些常用接口。对于理解UE4游戏开发至关重要。

虚幻引擎4(简称UE4)的GamePlay框架提供了一套强大的类来构建游戏。你的游戏可以是一个射击游戏,农场模拟器游戏,一个深度的RPG游戏,GamePlay框架可以帮助你实现这些复杂的工作。理解这个框架对于成功和高效是至关重要的。

适用群体

对UE4感兴趣,特别是那些正在学习UE4C++,并想了解更多关于虚幻的游戏框架的开发者。这篇文章介绍了您将在游戏框架中使用的核心类,并解释了它们的用法、引擎如何实例化它们以及如何从游戏代码的其他部分访问这些类。提供的大多数信息也适用于蓝图。

目录

Actor

ActorComponet

PlayerController

AIController

Pawn

GameModeBase

HUD

World

GameInstance

PlayerState

GameStateBase

UObject

GamePlayStatics

推荐阅读


GamePlay框架的类

在虚幻引擎4中构建游戏时,你会发现很多模板已经为你准备好了。在C++中,你会用到大量的类来制作游戏。我将介绍每一个类,它们拥有的一些简洁的特性,以及如何从代码中的其他地方引用它们。本指南中的大多数信息都适用于蓝图,尽管我使用C++代码段,但某些功能可能不暴露于蓝图,因此只与C++开发者有关。

 

 

Actor

        生命周期,网络复制,碰撞事件,伤害。

这可能是你在游戏开发中最常见的类,Actor是游戏中Level中所有对象的基类,包括玩家,敌人,门,墙和其他游戏对象。Actor是使用ActorComponent(见下一节)构建的,比如StaticMeshComponent、CharacterMovementComponent、ParticleComponent等等。甚至像GameMode这样的类(见下文)也是(即使GameMode在世界上没有“真实”的位置)。下面我们讲解关于Actor的一些内容。

在多人游戏中,Actor是可以通过网络复制的类,通过在Actor类对象的构造函数中调用SetReplicates(true)实现复制。Actor可以接受各种伤害,伤害可以通过MyActor->TakeDamage(...)或者UGamePlayStatics::ApplyDamage(...)直接将伤害作用到Actor上,对于不用类型的伤害有不同的调用方法,例如武器点伤害和范围爆炸类伤害。在虚幻的官方网站上有一个关于UE4伤害的详细介绍。

你可以使用GetWorld()->SpawnActor<T>(...)在代码中轻松的生成一个Actor对象,其中T是生成并返回的Actor实例类型,例如最基础的AActor类,AgadgetActor. AGameplayProp 等。

代码如下:

生成 FTransfrom SpawnTM;

FActorSpawnParameters SpawnParams;
SpawnParams.SpawnCollisionHandingOverride = ESpawnActorCollisionHandingMethod::AlwaySpawn;
SpawnParams.Owner = GetOwner();

/* Attempt to assign an instigator (used for damage application) */
SpawnParams.Instigator = Cast<APawn>(GetOwner());
ASEquippableActor* NewItem = GetWorld()->SpawnActor<ASEquippableActor>(NewItemClass, SpawnTM, SpawnParams);

有很多方法访问Actor对象,通常你可以使用一个指针或者引用来访问Actor对象的成员。上面的示例代码中,可以用通过NewItemClass(ASEquipableActor类型的指针)来对NewItemClass的成员进行操作。

一个特别有用的函数UGamePlayStatics:GetAllActorsOfClass(...), 它可以让你获取传入参数类型的所有派生类型对象的数组列表,如果你传入Actor,几乎可以获取整个Level中所有的对象。这个函数也许对你来说并不重要,因为确实对游戏用处不大,但是它可以作为你调试Level的工具函数,让你更加清楚整个Level都存在哪些Actor。

Actor自己并不具备变换特性(平移、缩放、旋转)。这些变换特性是通过Actor中的RootComponent实现的,例如SceneComponents层次结构中的顶级组件(有关SceneComponents的更多信息,请参见下文)。非常费用的函数如:MyActor->GetActorLocation()获取Actor中RootComponent组件的世界空间位置信息包括(平移、缩放、旋转)。

这里有一些很有用的函数,也是Actor使用最频繁的函数。

  • BeginPlay    //当Actor生成的时候并且初始化完成之后,第一个调用的的函数。在这里你可以处理你的基础游戏逻辑,定时器,或者改变一些已经初始化完成的成员属性和查询它的运行环境。
  • Tick  //每帧调用,对于绝大多数的Actor来说,处于程序性能考虑这个函数会被关闭。但是它默认是可用有效的。非常适合每帧设置动态逻辑和按
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呦呦鹿鸣.

你的打赏是给予我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值