意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Unreal engine 4引擎游戏运行逻辑学习

来源:恒创科技 编辑:恒创科技编辑部
2022-09-14 20:43:00


今天用了一早上的时间细看了一下UE4引擎的游戏运行逻辑关系。觉得算是有点收获,写出来以便收藏和分享学习。

一般的游戏,或者电影,或者小说,只要是想要给别人说明一个故事的东西都会在哲学上,或者说思维逻辑上是固定的不变的东西,这些东西在那里都是适用的。细观我们所处的整个现实世界,当你要表达一件事情或者某种观点时。 时间,地点,事件,这三样东西就是主要中心思想,同样我们设计游戏也不例外。


Unreal engine 4引擎游戏运行逻辑学习


先说一下游戏到低是个什么东西。


1、时间(事情的发生顺序)


游戏中自然少不了时间,这里的时间是指游戏逻辑运行的时间顺序。比如,我们点了开始游戏之后,选是初始化游戏场景和场景中的所有物体,再初始化游戏中我们可以控制的角色,和我们不能控制的角色,再接着初始化我们控制游戏角色的控制器等等。


2、地点(不同的游戏场景,也叫不同的游戏关卡)


地点,就是整个虚拟世界中的 不同场景 ,或者说是游戏的不同 关卡 。


3、事件(玩家与游戏的交互事件,游戏中对象之间的交互事件)


事件是游戏中我们最关心的东西,也正如现实生活中发生的事件一样,我关心的是事件发生后的结果,比如我们点击了屏幕,按动了键盘,点击了鼠标,这些都是事件,往细了说这些事件就是我们与游戏逻辑的交互事件。还有一些比如两个物体碰到了一起,子弹打中了敌人,火焰点燃了火把等,这些是游戏中虚拟物体之间的事件。


几个类


接下来,我围绕上边我的理解学习一下我对这个引擎运行逻辑的理解。看一下引擎运行时代码中定义的几个主要类(class),这些类会在游戏运行中初始化游戏中的对象。


1)UWorld


世界类,世界对象里包含了所有的关卡,角色,角色控制器等我们可以看到的东西。


2)ULevel


关卡类,关卡也就是我们在UEEditer中编辑的游戏地图,关卡中包含所有物体。


3)UCheatManager


虚拟管理器,他管理着碰撞,世界,角色,角色控制器,关卡,等等所有东西。


4)AActor


直译就是演员的意思,也就是世界中所有可见物体,角色,角色控制器,等等都是继承自它的。


5)UActorFactory


直译就是演员工厂,使用他可以创建你所要的物体或者角色。


6)AContorller


控制器,他继承自AActor,说白了就是所有控制角色运动的控制器的父类,玩家控制器就是他的子类。


7)APlayerController


玩家控制器,也就是手柄,或者键盘,或者多点触控控制游戏角色的类。


8)FActorSpawParameters


这是一个参数类,他的主要作用从字面上就可以看出来是角色物体创建参数,看到第一个字母是F,UE4中所有第一个字母是F的都是参数类。


9) UMovementComponent


这个是所有移动相关类的父类


10) AGameMode


这个类有非常多的游戏状态控制函数,比如游戏开始,加载关卡,创建物体等等,


游戏运行逻辑


UCheatManager对象很明显是一个单例类,他会在 APlayerController的结析函数中实例化。我建的是一个SideScroller示例地图的C++项目,其他项目应该也是这样初始化的。UCheatManager中有碰撞事件相关的方法,同时也有游戏时间相关的参数和方法。


AGameMode,每一个游戏都是从AGameMode开始,在这里有游戏开始,游戏重新开始,进入关卡,默认角色的创建,游戏界面的载入,游戏当前的加载或者运行状态。游戏关卡切换,关卡初始化等等都是在这里进行的。


每一个AActor对象都有一个GetWorld的方法,可以在这里得到这个物体所处的世界。UCheatManager中也有一个获取当前世界的方法。也可以获取当前关卡。


UWorld中有一个SpawnActor()方法,也就是说可以用这个方法在世界中创建新物体。同时UWorld中还有添加和移除控制器的方法。添加和移除关卡的方法等。


UActorFactory也可以创建AActor对象,这些对象是可以添加到ULevel关卡对像中去的,就像你在编辑器里作的操作一样。


UMovementComponent对象的类和他的子类有很多关于物体移动的方法。


AContorller,游戏控制器和他的子类,有所有控制角色的方法,走,跑,飞,跳,开火等等。



总的来说,有了这些,基本上就可以用代码写一些简单的逻辑了,其他更多的代码应该都是围绕这些类的细节工作的。UE4的游戏主框架是在Engine/Source/Runtime/Engine中。上边说的这些类就是在这个地方。

上一篇: 租用美国服务器:潜在的风险与应对策略。 下一篇: MongoDB 5.0 扩展开源文档数据库操作