0.动机
UE源码简直就一个宝库,里面封装了许多有用、好玩的代码。想一探究竟,还是得动手,尤其是低层代码,写点测试代码验证下和自己的理解是否有偏差也很重要。能脱离UEEditor,快速写点独立的测试代码?能把UE源码当作一个可复用的快平台的代码库来用?能用UE写独立的GUI工具?
答案当然都是:YES!下面尝试解决这几个问题:
- 快速编写测试代码
- 创建独立应用程序(比如:命令行工具、基于Slate界面的工具)
- 把UE当作一个代码库来用,开发自己的各种应用
测试代码仓库(不定期更新):https://github.com/david-pp/UESnippets
1.UBT命令行用法
UBT(Unreal Build Tool),是UE的构建工具,基于C#开发的,让UE的构建方式统一起来,跨越硬件平台、操作系统、编译器、甚至是构建系统的限制。各种平台下的IDE(VS、Xcode、Rider、VSCode等)构建本质上都用的UBT。假设我们没有IDE,如何使用命令行来构建整个项目(以下以Mac系统下为例,Windows/Linux类似)。
定义快捷命令:
1 | # UE安装路径 |
生成工程文件(IDE工程,纯命令行玩时,非必要):
1 | # 生成XCode工程 |
构建游戏项目:
1 | # |
启动游戏项目
1 | ue4 $PWD/HelloUE.uproject |
2.独立应用的配置和构建
UE支持独立的应用程序Program,可以由C#/C++开发。有两种方式来开发自己独立的应用:
- Engine目录:位于
Engine/Soure/Programs
,有许多值得参考的例子,比如:BlankProgram、SlateViewer等。 - Game目录:位于自己游戏项目的
Game/Source/Programs
,或自定义目录。
2.1 Program的构建命令
Engine目录下的Program构建:
1 | ubt BlankProgram Mac Development |
Game目录下的Program构建:
1 | # 构建MyBlankProgram |
2.2 Program的构建配置
参考:
- BlankProgram -
Engine/Source/Programs/BlankProgram/
- SlateViewer -
Engine/Source/Programs/SlateViewer/
代码示例:
复制一份引擎下面的BlankProgram:https://github.com/david-pp/UESnippets/tree/main/MyBlankProgram
1 | cd $YourGame/Source |
独立应用的构建配置:
MyBlankProgram.Target.cs
1 | // 指定为需要构建的目标类型 TargetType.Program |
MyBlankProgram.Build.cs
1 | // 与Engine/Source/BlankProgram的区别,包含路径 |
3.独立的控制台应用
代码示例:https://github.com/david-pp/UESnippets/tree/main/HelloUECpp
1 |
|
构建:
1 | cd $YourGame |
4.独立的Slate界面应用
代码示例:https://github.com/david-pp/UESnippets/tree/main/HelloSlate
1 | int RunSimpleGUI(const TCHAR* CommandLine) |
构建:
1 | cd $YourGame |
Simple Window效果如下:
Slate Viewer效果如下: