大家好,又见面了,我是你们的朋友全栈君。
本帖为原创文章,转载请注明出处。
现在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
玩家控制器,首先这个是客户端服务器都有的。
代码语言:javascript复制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的图
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185953.html原文链接:https://javaforall.cn