UE4 GamePlay架构学习篇

1 篇文章 0 订阅

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

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

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的图

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WhiteTian

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值