《LearnUE——基础指南:开篇—3》——基础概念

news2024/11/27 18:44:30

目录

程序之祖——HellowWorld

0.3.1 创建HellowWorld工程

 0.3.2编译类型

0.3.3 平台支持

0.3.4 命名约定


程序之祖——HellowWorld

0.3.1 创建HellowWorld工程

接上文准备工作完成之后,双击运行Unreal Engine快捷图标,或者双击生成的UE4Editor.exe,新建工程,UE提供了多个类型的模板,我们这里选择第三人称视角。然后“下一步”。

选择自己需要保存的工程路径,填写工程名。最后创建工程。

工程结构和项目目录结构如下所示:

 工程结构:

Config目录里带着3个最主要的配置文件分别是DefaultEditor.ini,DefaultEngine.ini,DefaultGame.ini。代码方面自动生成了用于编译系统的3个.cs文件

 文件目录:

  1. Binaries:存放编译生成的结果二进制文件。该目录可以gitignore,反正每次都会生成。
  2. Config:配置文件。
  3. Content:平常最常用到,所有的资源和蓝图等都放在该目录里。
  4. DerivedDataCache:“DDC”,存储着引擎针对平台特化后的资源版本。比如同一个图片,针对不同的平台有不同的适合格式,这个时候就可以在不动原始的uasset的基础上,比较轻易的再生成不同格式资源版本。gitignore。
  5. Intermediate:中间文件(gitignore),存放着一些临时生成的文件。有:
  6. Build的中间文件,.obj和预编译头等
  7. UHT预处理生成的.generated.h/.cpp文件
  8. VS.vcxproj项目文件,可通过.uproject文件生成编译生成的Shader文件。
  9. AssetRegistryCache:Asset Registry系统的缓存文件,Asset Registry可以简单理解为一个索引了所有uasset资源头信息的注册表。CachedAssetRegistry.bin文件也是如此。
  10. Saved:存储自动保存文件,其他配置文件,日志文件,引擎崩溃日志,硬件信息,烘培信息数据等。
  11. Source:代码文件。 

 0.3.2编译类型

UE本身包含有两种编译类型,分别是网络模式和编辑器模式,也就是说在我们工程编译部署的时候会包含服务器(Server)端和客户端(Client),在我们日常的开发中,也会有Editor和Stand-alone之分。每种编译配置包含两种关键字。第一种表明了引擎以及游戏项目的状态。第二个关键字表明正在编译的目标。

官方解释如下:官方解释

 自己测试验证后整理的各种模式解释如下:

状态

Engine

Game

解释

Debug

(调试)

Debug

Debug

必须在编辑器上加-debug参数才能反射查看代码更改

DebugGame(调试游戏)

Release

Debug

适合只调试游戏代码

Development(开发)

Release

Release

允许编辑器反射查看代码更改

Shipping

(发行)

Release

Release

无控制台命令,统计数据和性能分析

Test

(测试)

Release

Release

启用了一些控制台命令,统计数据和性能分析

编辑目标

解释

Game

(游戏)

此配置生成项目的独立可执行版本,但需要特定于平台的烘焙内容。请参阅打包项目参考页面以了解有关烘焙内容的更多信息。

Editor

(编辑器)

直接在编辑器中打开游戏项目

Client

(客户端)

多人联机项目,生成客户端版本

需提供《Game》Client.Target.cs文件

Server

(服务器)

多人联机项目,生成服务器版本

需提供《Game》Server.Target.cs文件

 在Visual Studio 开发中,我们以在工具栏中设置生成配置。您可以按如下方式找到相关设置:

0.3.3 平台支持

UE4目前支持众多平台,包括Windows,Linux,IOS,Android等等,同时提供了供各个端(桌面端,浏览器端,移动端,AR,VR,MR)使用的配套插件。如下图所示:

因此UE为了方便你配置各个平台的参数和编译选项,简化编译流程,UE4实现了自己的一套编译系统。这套工具的编译流程结果,简单来说,就是你在VS里的运行,背后会运行UE4的一些命令行工具来完成编译,其他最重要的两个组件:

  1. UnrealBuildTool(UBT,C#):UE4的自定义工具,来编译UE4的逐个模块并处理依赖等。我们编写的Target.cs,Build.cs都是为这个工具服务的。
  2. UnrealHeaderTool (UHT,C++):UE4的C++代码解析生成工具,我们在代码里写的那些宏UCLASS等和#include "*.generated.h"都为UHT提供了信息来生成相应的C++反射代码。

一般来说,UBT会先调用UHT会先负责解析一遍C++代码,生成相应其他代码。然后开始调用平台特定的编译工具(VisualStudio,LLVM)来编译各个模块。最后启动Editor或者是Game。

0.3.4 命名约定

UE底层代码使用的是面向对象的C++语言,所以在很大程度上对C++开发者是友好的,同时,UE本身又有一套属于自己的命名约定,常见的命名约定如下:

  1. 模版类都以T作为前缀,比如TArray,TMap,TSet等
  2. UObject派生类都以U前缀
  3. AActor派生类都以A前缀
  4. SWidget派生类都以S前缀
  5. 抽象接口以I前缀
  6. 枚举以E开头
  7. bool变量以b前缀,如bPendingDestruction
  8. 其他的大部分以F开头,如FString,FName
  9. typedef的以原型名前缀为准,如typedef TArray
  10. 在编辑器里和C#里,类型名是去掉前缀过的
  11. UHT在工作的时候需要你提供正确的前缀

所以虽然说是UE自身的约定,但在开发中我们也必须遵守!!!

下篇:《LearnUE——基础指南:上篇—0》——UE架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/474804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机图形学】图形变换(以任意直线为对称轴的对称变换)

模块3-2 图形变换 一 实验目的 编写图形各种变换的算法 二 实验内容 1:任意直线的对称变换。要求将变换矩阵写在实验报告中,并与代码匹配。求对任意直线AxByC0的对称变换矩阵。 实验结果如下图所示: 1:预设图形初始化 2&#…

数据结构与算法(小议递归二)

文章目录 前言一、例二二、为什么总结 前言 前面说到了递归在裴波那契数列计算中并不怎么适用,那么它适合什么样的场景呢? 我们继续举例和python3对比测试来说明。 一、例二 下面我们试试阶乘,在前面的代码上稍稍改一下就可以了&#xff1a…

ApachePOI操作Excel快速入门使用

简介 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目,主要任务是创建和维护Java API,以基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)处理各种文件格式&#xff0…

【Java笔试强训 3】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥最长的…

能用OpenCV做的15大计算机视觉任务

使用OpenCV,你几乎可以完成你能想到的每种计算机视觉任务。现实生活中的问题要求同时使用许多计算机视觉算法和模块来获得所需的结果。因此,你只需了解要用哪些OpenCV模块和函数来获得你想要的东西。 让我们来看看OpenCV中可以开箱即用的功能。 1 内置…

跨平台Office文档预览原生插件,非腾讯X5,支持离线,稳定高可用

引言 2023年4月13日零时起&#xff0c;腾讯浏览服务内核文档能力正式下线&#xff0c;要实现真正离线文档预览&#xff0c;于是有了这边文章。 前面写了多篇关于<跨平台文件在线预览解决方案>&#xff0c;不管使用pdf.js、LibreOffice&#xff0c;还是永中DCS&#xff…

JAVA设计模式之观察者模式( 通俗易懂的代码讲解 )

简述&#xff1a;Java的观察者模式是一种设计模式&#xff0c;它定义了一种对象间的一对多的依赖关系&#xff0c;使得当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都能够得到收到消息通知。在这种模式中&#xff0c;被观察者维护了一个观察者列表&#xff0c;并…

深入浅出 Compose Compiler(1) Kotlin Compiler KCP

前言 Compose 的语法简洁、代码效率非常高&#xff0c;这主要得益于 Compose Compiler 的一系列编译期魔法&#xff0c;帮开发者生成了很多样板代码。但编译期插桩也阻碍了我们对于 Compose 运行原理的认知&#xff0c;想要真正读懂 Compose 就必须先了解它的 Compiler。本系列…

前端系列11集-ES6 知识总结

ES Module 优点 静态分析 浏览器和 Node 都支持 浏览器的新 API 能用模块格式提供 不再需要对象作为命名空间 export 用于规定模块的对外接口 输出的接口与其对应的值是动态绑定关系可以取到模块内部实时的值 import 用于输入其他模块提供的功能 具有提升效果&#xff0c;会提升…

刷题4.28

1、 开闭原则软件实体&#xff08;模块&#xff0c;类&#xff0c;方法等&#xff09;应该对扩展开放&#xff0c;对修改关闭&#xff0c;即在设计一个软件系统模块&#xff08;类&#xff0c;方法&#xff09;的时候&#xff0c;应该可以在不修改原有的模块&#xff08;修改关…

服务注册与发现-Consul(Linux)

本文要有docker支持&#xff0c;docker的安装使用Docker 在Linux-CentOS上的安装使用_XiaoGuaiSs的博客-CSDN博客如果提示 [Warning] IPv4 forwarding is disabled. Networking will not work.然后将项目拷贝至linux 的project目录下&#xff08;随意&#xff09;。生成项目镜像…

Node第三方包 【Request】

文章目录 &#x1f31f;前言&#x1f31f;Request&#x1f31f;安装与使用&#x1f31f;流&#xff08;stream&#xff09;操作&#x1f31f;Form表单&#x1f31f;application/x-www-form-urlencoded (URL编码的Form)&#x1f31f;multipart/form-data (Multipart Form 上传) …

百度地图采集经纬度坐标数据定位的javascript实战开发(地理坐标拾取系统、地址定位点选插件、实时定位、数据导入、地理编码、位置纠偏)

坐标采集 前言1.百度地图地理坐标拾取系统2.位置选择插件百度地图经纬度选择插件默认参数配置 3.数据导入4.地理编码爬取百度webAPI返回参数前端封装转换函数 5.手机GPS定位GPS定位 6.位置纠偏html容器经纬度纠偏 前言 在百度地图的标注开发中&#xff0c;最为关键的操作就是经…

华硕主板来电开机自启

重启电脑&#xff0c;开机按del或者F2进入bios 按F10保存确认即可

浏览器跨站点通信(两个IP不同网站通信)

需求场景&#xff1a;OA系统会通过接口调用的方式将ERP系统的待办信息获取并显示在OA系统中。登录OA系统后&#xff0c;在OA系统中点击ERP系统的待办&#xff0c;会自动打开ERP系统业务处理页面&#xff0c;当ERP系统对应业务处理完毕&#xff0c;需要在OA系统中刷新待办记录&a…

【环境配置】解决No module named ‘librosa‘

执行以下命令下载 pip install librosa我这里遇到了报错&#xff1a; Microsoft Visual C 14.0 or greater is required. Get it with “Microsoft C Build Tools”: https://visualstudio.microsoft.com/visual-cpp-build-tools/ 相关解决方案请参考&#xff1a; 【环境配置…

Python渗透测试编程基础——线程、进程与协程

目录 一、进程与线程的概念 1.进程 2.线程 3.进程和线程的关系 4.任务执行方式 二、Python中的Threading模块 1.线程模块介绍 2.Threading介绍 &#xff08;1&#xff09;方法和属性 &#xff08;2&#xff09;类方法 三、线程简单编写 1.流程 2.创建线程 &#x…

云原生技术在云计算中的应用探讨

第一章&#xff1a;云原生技术的概念与发展 云原生技术是一种针对云计算环境设计的应用程序开发和部署方法&#xff0c;主要目标是提高应用程序的可伸缩性、可移植性、高可用性和自动化管理等方面的特性。这种技术是近年来在云计算领域兴起的一个新的开发模式&#xff0c;它主要…

大模型“涌现”的思维链,究竟是一种什么能力?

听说最近AI大厂的开发人员和高校的NLP研究人员&#xff0c;都在琢磨&#xff0c;怎么让大模型“涌现”。那画面莫名就让我想到了程序员给服务器上香来保佑不宕机&#xff0c;都有种求诸于天的玄学。 所谓“涌现”,在大模型领域指的是当模型突破某个规模时&#xff0c;性能显著提…

商城管理系统的数据表从属关系+navicat建表操作+数据库文件转储并入代码操作

1&#xff0c;商城管理系统的数据表从属关系 在商城管理系统中&#xff0c;我们会面临属性分组的问题&#xff0c;商品表与分类表需要建立链接&#xff1b; 在控制类中我们将分类表中属性类传过来&#xff0c;与商品值params建立链接 public R list(RequestParam Map<Strin…