UE4入门学习2:工程结构分析
- | - |
---|---|
文章 | UE4入门学习2:工程结构分析 |
作者 | 游蓝海( http://blog.csdn.net/you_lan_hai ) |
最近又开始996加班了,业余时间更少了,以后文章更细的速度可能也会较慢了。
接上一节《UE4入门学习1:环境搭建》,我把工程整理了一下,工程名称改为“HelloUE4”,放到了github上(https://github.com/youlanhai/LearnUE4)。本文的目的是详细分析上一节中建立的工程结构,从宏观上认识UE4。
文件目录结构
根目录
上图是UE4工程在Windows系统上的工程目录截图。下面用表格说明每个目录的含义:
文件名称 | 说明 |
---|---|
.vs/ | Vistual Studio生成的临时目录,版本库中可忽略 |
Binaries/ | C++代码编译输出的动态链接库文件,编辑器会自动检测和加载这些动态链接库(热重载)。版本库中可忽略 |
Config/ | 工程的配置文件。可以手动打开修改,也可以在UE4编辑器中通过图形界面来修改 |
Content/ | 资源目录。UE4的资源都是以专用的二进制格式存贮的,只能通过编辑器导入。不能手动将资源拷贝到此目录中。 |
Intermediate/ | 存放临时文件的路径。版本库中可忽略 |
Saved/ | 编辑器自动存贮的一些文件,以及日志信息等。版本库可忽略 |
Source/ | C++代码存放路径。 |
HelloUE4.sln | 自动生成的Visual Studio工程文件,可以点击UE4编辑器的文件菜单下“生成Visual Studio工程”来生成,也可以在工程文件(*.uproject)的鼠标右键菜单中选择“Generate Visual Studio Project files”来生成。版本库中可忽略 |
HelloUE4.uproject | UE4项目的工程文件,是json格式的文件。 |
Source目录
Source目录比较重要,这里单独说一下。目前Source目录下只有一个文件夹HelloUE4
,和两个C#文件。这里的C#文件仅用于描述工程的编译构建信息,类似与Makefile或CMakeLists.txt,文件的格式为“工程名”+ “.Target.cs”。
一个UE4工程可包含若干个“子工程”(Module),子工程在工程文件(*.uproject)文件中定义:
{
"FileVersion": 3,
"EngineAssociation": "4.15",
"Category": "",
"Description": "",
"Modules": [
{
"Name": "HelloUE4",
"Type": "Runtime",
"LoadingPhase": "Default",
"AdditionalDependencies": [
"Engine"
]
}
]
}
当前的工程只有一个子工程HelloUE4,如果需要多个子工程,可以在这里Modules
属性下添加上引用,然后在Source目录里添加上工程文件夹和编译文件(*.Target.cs)。
需要注意的是,Source目录下还有一个”HelloUE4Editor.Target.cs”文件,该文件用于构建编辑器相关的代码。如果工程中存在扩展编辑的代码(也就是存在依赖UnrealEd的代码),需要放到Editor模块下,不能跟Runtime代码放一块,否则无法打包。关于Editor模块如何建立和使用,我们后面专门用一个章节来说明。
场景结构
静态结构
在场景树的最顶层是关卡Actior——Home,其他的都Actor都必须方到关卡Actor内部。UE4的Actor也支持嵌套,而且场景树支持文件夹过滤器,可以将一组相似的Actor放到一个过滤器中。
运行时结构
点击“播放”按钮,进入运行模式时,场景树会多出来很多东西。黄色名称的Actor是动态创建出来的。下面大致说一下动态创建出来的对象:
名称 | 描述 |
---|---|
DefaultPawn | 默认代表玩家的Actor |
PlayerController | 玩家的控制器。这里用于接收键盘输入而移动和旋转 |
PlayerCameraManager | 玩家的相机管理器 |
PlayerState | 存贮玩家的游戏内数据 |
GameModeBase | 游戏模式。用于处理游戏玩法的逻辑 |
GameStateBase | 游戏状态。用于记录游戏玩法相关数据 |
HUD | 管理UI |
Visual Studio 工程结构
VS项目分为两个项目:UE4和HelloUE4。UE4是引擎源码,HelloUE4是我们自己创建的工程。这里,我们主要看我们自己工程的结构。
名称 | 描述 |
---|---|
HelloUE4.h | 预编译头文件,用于加快编译速度。HelloUE4目录下的所有cpp文件都必须包含该头文件,因此一些比较通用但是不会修改的代码也可以包含在这个文件中。 |
MyActor.h | 我们上一节中创建的Actor类 |
HelloUE4.Build.cs | 构建系统的描述文件。这里主要用于描述当前工程所依赖的库文件。 |
*.Target.cs | 构建系统的描述文件。前面已经说过了 |
HelloUE4.uproject | UE4工程文件。前面也说过了 |
本系列文章会和我的个人公众号同步更新,感兴趣的朋友可以关注下我的公众号:游戏引擎学习。扫下面的二维码加关注: