UE4 GamePlay架构学习篇[通俗易懂]

UE4 GamePlay架构学习篇[通俗易懂]附带上激活成功教程版安装说明:1.安装jdk。百度搜索jdk,如果安装了则跳过。2.解压下载的.zip文件。双击打开。syntevo_keygen.jar文件。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

本帖为原创文章,转载请注明出处。

现在UE4刚免费不久,网上的资料还很少,有一些UE3的大佬出了一些学习的帖子。通过参考前辈的文章+通过查阅官方文档和官方的模板案例测试得出如下结论,供学习参考:

UE4 GamePlay架构学习篇[通俗易懂]

1>UGameInstance

游戏实例,全局只存在一份,我们自己继承一下,实现Init()和ShutDown()方法。比如不会被GC的数据可以放到这里,比如UE4的本地数据库(存档USaveGame)(因为Level切换的时候之前关卡中的数据都会被GC,代码中存的关卡的数据也就没了)。

1.1>Init():写我们自己的初始化代码,可作为程序的入口

1.2>ShutDown():写我们自己的结束程序代码,比如释放SDK资源等

2>AGameMode

游戏模式,其实是一个服务端(Server)。

2.1>服务端;游戏模式;客户端是不允许访问的。UGameEngine::LoadMap()。

2.2>GameMode在哪里初始化的?GameInstance里面的SetGameMode()

3>AGameState

游戏状态,主要用途是全局管理游戏状态和游戏数据,客户端也存在一份。客户端服务端都可以访问。

4>AGameSession

游戏会话:存在于服务端的,客户端没有。

功能:1>可以进行踢出玩家 2>玩家加入退出游戏监听 3>重新开始对局 4>获取当前对局的人数 5>获取房间的状态

5>AController

控制器,一个很重要的概念,角色有控制器,人也有控制器。在这里记录一个UE4里面的Owner还有Instigator的概念。

设置拥有者
    SetOwner(InOwner);
设置谁导致的这个Actor的生成。这块比较绕。这样想就明白了了
我觉得UE4设置InOwner,InInstigator就是在射击游戏的原型上衍生出来的。
比如人拿枪,人开枪,枪发射子弹。假如子弹就是这个被Spawn的Actor
那么InOwner是谁?是抢,子弹属于枪的
那么InInstigator是谁?是人,人开枪才有了子弹。
当然怎么设置取决于我们
   SetInstigator(InInstigator);

6>AAIController::public AController +CharacterMakeNoise() +   UAIPerceptionComponent(AI监听组件,可有视力和听力)

AI的控制器,首先这个是客户端服务器都有的。

AI有自己的独立控制器,在Pawn上面进行设置即可。可在蓝图中选择,在这里还会衍生出AITree等一系列的AI模块的东西。

7>APlayerController::public AController

玩家控制器,首先这个是客户端服务器都有的。

1>一般我们在这里面处理监听玩家的输入,当然也可以在Characer上面做,因为Pawn和Controller是一个相互持有的关系,Character又继承自Pawn。
2>当前不止第一条,还有一些射线检测;
3>GM的命令行
4>客户端的HUD和视口GameViewPortClient
5>PlayerCameraManager相机管理 用于播放相机动画, 以及ShakeCamera 屏幕震动效果等
6>作弊的管理
7>网络连接
8>旁观者
9>替换角色的功能,比如运行中我们要切换门派,将整个Pawn给换掉
10>…………功能还有很多

8>APlayerState

顾名思义:角色的数据类,当然也可以自己写。将HP、MP、攻击力、Buff等放这。

9>APawn

角色基础类,没有聚合移动组件,和Controller是一个互相持有的关系

10>ACharacter::public APawn

角色类,默认聚合了CharacterMovement组件,可用物理真实去移动等。Jump,Lunch等功能。

11>UCharacterMovementComponent

角色移动组件,最终要的是里面分了几种模式,也支持我们自己扩展,WalkMode、Fall、Fly、Swim等,摩擦力这些都在这。

12>AHUD

角色的2D视口绘制类,就是UI类,比如绘制一个FPS游戏的准心

13>UMG

可视化编辑的UI系统,就像cocos2d里面的cocosstudio编辑UI的界面的工具。里面封装了Slate。

14>UMG->Slate

它是UMG的底层实现,也是UE4编辑器界面使用的GUI的架构,也就是说UE4的编辑器界面就是用Slate写的。

15>UGameViewportClient

游戏视口管理,比如失去焦点(我们鼠标点中了视口的外面,点到了我们桌面),返回焦点(处于失去焦点状态并且鼠标点击中了我们的程序视口内)。

16>UEditorViewportClient

编辑器的视口管理

17>AGameUserSetting

游戏的默认存档设置,比如全局的抗锯齿等级等。

18>USaveGame

UE4提供的一套存档的系统,单机游戏用着不错,也可作为本地存储一些数据载体。

19>AWorldSettings

顾名思义:一个世界的设置,一个地图的设置,一个UMap的设置。里面有KillZ等信息,一直掉落,掉到什么KillZ的负数绝对值的时候角色就死亡了,被销毁了,当然我们是可以监听的。等等的功能。

UE4太牛了………………自学过程中。我只是看了个大概,很多功能还没研究完。天道酬勤,共勉

谢谢

简单画了Visio的图

UE4 GamePlay架构学习篇[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185953.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [JAVA]定时任务之-Quartz使用篇

    [JAVA]定时任务之-Quartz使用篇定时任务之-Quartz使用篇        Quartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或EJBs。官方网站:http://www.opensymphon

    2022年7月13日
    14
  • 多值依赖的简单理解_第四范式智能客服官网

    多值依赖的简单理解_第四范式智能客服官网1.多值依赖1.1多值依赖:多值依赖属4nf的定义范围,比函数依赖要复杂得多。在关系模式中,函数依赖不能表示属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖。在函数依赖中,X与Y是否存在函数依赖关系,只需考察X,Y的两组属性,与别的属性无关。而在多值依赖中,X与Y是否存在多值依赖还需看属性Z。1.2数…

    2025年6月20日
    5
  • DVWA-PHP function allow_url_include: Disabled错误

    DVWA-PHP function allow_url_include: Disabled错误参考网址:https://stackoverflow.com/questions/34274492/dvwa-setup-php-function-allow-url-include-disabled/34540293在进行DVWA的配置时出现了PHPfunctionallow_url_include:Disabled错误,错误如下。系统给的错误提示是这样…

    2022年7月21日
    34
  • lvm扩容磁盘空间[通俗易懂]

    lvm扩容磁盘空间[通俗易懂]1lvm的基本概念物理卷pv:指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数卷组vg:类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)逻辑卷lv:类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等2LVM能作什么?答:linux的系统..

    2022年6月20日
    45
  • 卷积神经网络超详细介绍

    卷积神经网络超详细介绍1、卷积神经网络的概念2、发展过程3、如何利用CNN实现图像识别的任务4、CNN的特征5、CNN的求解6、卷积神经网络注意事项7、CNN发展综合介绍8、LeNet-5结构分析9、AlexNet10、ZFNet10.1意义10.2实现方法10.3训练细节10.4卷积网络可视化10.6总结11、VGGNet11.1结构11.2网络特点:1…

    2022年6月11日
    33
  • 关于insertBefore是怎么使用的

    关于insertBefore是怎么使用的insertBefore接收两个参数第一个参数是将要进行插前操作的对象第二个参数是被插前的对象也可以称为参考对象调用者为你要操作的元素的父级如下例:<!DOCTYPE ht

    2022年7月2日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号