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

今天用了一早上的时间细看了一下UE4引擎的游戏运行逻辑关系。觉得算是有点收获,写出来以便收藏和分享学习。
一般的游戏,或者电影,或者小说,只要是想要给别人说明一个故事的东西都会在哲学上,或者说思维逻辑上是固定的不变的东西,这些东西在那里都是适用的。细观我们所处的整个现实世界,当你要表达一件事情或者某种观点时。 时间,地点,事件,这三样东西就是主要中心思想,同样我们设计游戏也不例外。
先说一下游戏到低是个什么东西。
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中。上边说的这些类就是在这个地方。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值