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架构学习篇[通俗易懂]

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Sublime text3 Version 3.2.1 3207 和 3.2.2 3211(2019-11-06亲测有效)

    Sublime text3 Version 3.2.1 3207 和 3.2.2 3211(2019-11-06亲测有效)Sublimetext3Version3.2.13207激活码许可证(2019-04-30亲测有效)在hosts中添加: 127.0.0.1license.sublimehq.comhosts地址: C:\Windows\System32\drivers\etc点击下载Sublimetext3打开sublime安装文件地址点击下载激活成功教程工具将激活成功教程工具复制到安装文件…

  • .Net之路(十三)数据库导出到EXCEL

    .Net之路(十三)数据库导出到EXCEL

  • 项目启动,无法加载Spring xsd文件

    项目启动,无法加载Spring xsd文件问题的产生:有个Java项目(Jar文件),每半小时重启一次,对外提供服务。突然收到报警,早上5点半重启服务时出错,服务无法正常启动。查看启动日志,错误是xml解析失败,无法找到xml元素的声明。具体报错日志如下:INFO:LoadingXMLbeandefinitionsfromclasspathresource[applicationContext-task

    2022年10月24日
  • C++map函数的用法_random函数用法

    C++map函数的用法_random函数用法https://blog.csdn.net/sevenjoin/article/details/81943864

    2022年10月26日
  • 散列查找和哈希查找_散列检索

    散列查找和哈希查找_散列检索散列表相关概念散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。建立了关键字与存储位置的映射关系,公式如下:存储位置=f(关键字)这里把这种对应关系f称为散列函数,又称为哈希(Hash)函数。采用散列技术将记录存在在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表。那…

  • Android多线程:HandlerThread详细使用手册(含实例讲解)

    Android多线程:HandlerThread详细使用手册(含实例讲解)前言多线程的应用在Android开发中是非常常见的,常用方法主要有:继承Thread类实现Runnable接口HandlerAsyncTaskHandlerThread今天,我将全面解析多线程其中一种常见用法:HandlerThread由于本文涉及多线程知识和Handler源码解析,所以阅读本文前建议先看:Android开发:Handler异步通信机制全面解…

发表回复

您的电子邮箱地址不会被公开。

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