游戏框架可以说是使用UE4进行游戏开发或者其他应用开发应该要遵循的一套规则,磨刀不误砍柴功,我们应该尽可能熟悉这套规则,否则你可能像无头苍蝇不知何处开始,也可能会出现张冠李戴的现象,A类的逻辑硬写到了B类,杂乱无章而事倍功半,所以熟悉游戏框架是进行后续开发的前提。学习游戏框架,就代码层面来讲,就是学习诸多的游戏框架类,那么我们大致需要弄明白了三个问题,基本就对整个框架掌握至七八成,如下:
What,就是每个类是什么,有什么作用;How,就是怎样使用每个类,具体在我们实现功能时,代码逻辑应该恰当地写在哪个类中或者对应的拓展类中;Why,就是能理解每个类设计如此的理由,这样使用起来会随心所欲,到达这个地步,应该需要有一定的项目经验及多年的工作理解,当然天才除外。
UE4的游戏框架从宽泛地角度来讲,也遵循MVC的经典框架,所涉及的类有很多,我仅给出经常需要用到的类做说明,其框架图,如下:
Gameplay类mvc图
我分别对一些关键类做必要说明。
AShooterGameMode-->AGameMode
概念上讲,游戏规则制定者,形象地说就是裁判。它决定了进入游戏的玩家类型、及数量,如APlayerController* Login(UPlayer* NewPlayer...)接口;当玩家不断通关升级时,它也指挥着各级关卡(Level)的切换,如APlayerController* ProcessClientTravel(FString& URL...)接口;它也控制着游戏的进行、暂停以及结束,如bool SetPause(APlayerController* PC...)接口。
AShooterGameState-->AGameState
它是用于保存当前游戏的状态数据。在多人联网的模式下,为了同步各个游戏客户端,需要将游戏状态传递到各个端,其中就定义了FName MatchState;当然,对于从游戏层面保存的数据,开发者自定义的数据,比如游戏剩余时间int32 RemainingTime,这些都可以在此类中定义,并且同步到各个客户端。