UE4入门学习2:工程结构分析

- -
文章 UE4入门学习2:工程结构分析
作者 游蓝海( http://blog.csdn.net/you_lan_hai )

最近又开始996加班了,业余时间更少了,以后文章更细的速度可能也会较慢了。

接上一节《UE4入门学习1:环境搭建》,我把工程整理了一下,工程名称改为“HelloUE4”,放到了github上(https://github.com/youlanhai/LearnUE4)。本文的目的是详细分析上一节中建立的工程结构,从宏观上认识UE4。

文件目录结构

根目录

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工程文件。前面也说过了


本系列文章会和我的个人公众号同步更新,感兴趣的朋友可以关注下我的公众号:游戏引擎学习。扫下面的二维码加关注:
游戏引擎学习

posted @ 2017-10-19 18:07  游蓝海2017  阅读(1212)  评论(0编辑  收藏  举报