前言
开个新坑,用来记录关于在虚幻4中如何用C++来开发游戏。虚幻4中有自己的一套特定C++框架用于游戏开发,本系列文章主要通过分析虚幻4.22(2019.07.18)版本的StrategyGame的源码来整理虚幻4中的游戏开发流程。
本文主要针对虚幻4中界面加载部分的C++实现进行说明。
界面加载模块
在载入游戏前一般都会有一个等待界面进行缓冲,当游戏内部资源加载完毕将会从加载界面跳转到游戏界面。在虚幻4中有一套特定的方式来实现实现这个功能。
实现流程
首先我们需要对.uproject这个文件进行编辑,用文本编辑器打开后一般是如下样子:
{
"FileVersion": 3,
"EngineAssociation": "4.22",
"Category": "",
"Description": "",
"Modules": [
{
"Name": "Demo",
"Type": "Runtime",
"LoadingPhase": "Default"
}
]
}
基本来说就是记录了当前项目的一些基本信息,那么重点在于Modules这个部分。我们的主程序名是Demo所以整个游戏程序核心功能开发都是基于这个模块完成的。那么界面加载这一部分特殊就特殊在于我们需要将他作为一个独立模块进行加载,具体来说将这个文件修改如下所示:
{
"FileVersion": 3,
"EngineAssociation": "4.22",
"Category": "",
"Description": "",
"Modules": [
{
"Name": "Demo",
"Type": "Runtime",
"LoadingPhase": "Default"
},
{
"Name": "DemoLoadingScreen",
"Type": "Runtime",
"LoadingPhase": "PreLoadingScreen"
}
]
}
此处我们新增了一个叫DemoLoadingScreen的模块,注意"LoadingPhase"必须设置为"PreLoadingScreen"。
如此一来我们的程序中就有了两个模块,一个用来进行主要游戏开发,另外一个用来实现界面加载。特别需要提到的是模块新增到此处并未结束。
我们还需要找到Source文件夹下的Demo.Target.cs和DemoEditor.Target.cs文件也需要进行修改。
以下面代码为例,额外模块当中需要将"DemoLoadingScreen"添加进去,否则在接下来的操作中将会出现问题。
using UnrealBuildTool;
using System.Collections.Generic;
public class DemoTarget : TargetRules
{
public DemoTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
ExtraModuleNames.AddRange( new string[] { "Demo", "DemoLoadingScreen" } );
}
}
修改完这两个文件后,找到.uproject右键点击图标并选择“Generate Visual Studio project files”, 重新生成VS操作虚幻才会帮你自动链接一些相关类库,省的自己去VS项目设置里面自己添加(自己添加非常容易少引用导致最终无法打开编辑器)。
完成这步操作后,就需要自己去书写关于加载界面的代码了,此部分我只是测试功能所以直接使用了虚幻4官方提供的StrategyGame里面的代码,有需求的人可以根据官方api文档进行修改。
到此处为止基本上界面加载功能就实现了,简单一提的是只有发布后才会看到界面加载读取的效果,直接编辑器中Run是看不到的。
Demo案例
我将这个Demo放到了GitHub上,大家可自行参考代码。Github地址