소스 검색

添加C++代码结构

usuiforhe 4 년 전
부모
커밋
cbab439793
3개의 변경된 파일74개의 추가작업 그리고 1개의 파일을 삭제
  1. BIN
      img/UE_Asset120.png
  2. BIN
      img/UE_Asset121.png
  3. 74 1
      虚幻.md

BIN
img/UE_Asset120.png


BIN
img/UE_Asset121.png


+ 74 - 1
虚幻.md

@@ -1,7 +1,7 @@
 <!--
  * @Author: lc
  * @Date: 2021-09-03 21:41:18
- * @LastEditTime: 2021-09-20 17:37:47
+ * @LastEditTime: 2021-09-29 17:03:05
  * @LastEditors: Please set LastEditors
  * @Description: 虚幻学习
  * @FilePath: D:\Projects\markdown\虚幻.md
@@ -1680,3 +1680,76 @@ HUD默认自身是不接受键盘输入事件的,本身HUD就不应直接响
         - 得到当前的编译目标信息
         - Platform:平台,win64、Android、IOS
         - Configuraiton:配置,Debug、Development、Shipping
+
+## C++ 工程
+
+### 工程目录结构
+
+![坐标转换](img/UE_Asset120.png)
+
+1. Binarites : 存放编译生成的结果二进制文件。该目录不是必须目录,可以删除
+2. Config : 配置文件
+3. 1Content : 所有的资源和蓝图等都放在该目录
+4. DerivedDataCache : "DDC",存储着引擎针对平台特化后的资源版本。比如同一张图片,针对不同平台有不同合适的搁置,这个时候就在不同原始资源的基础上,生成不同格式资源版本。可以删除
+5. Intermediate : 中间文件,存放临时生成的文件,可以删除
+  - Build的中间文件,.obj和预编译头等
+  - UHT预处理生成的.generated.h/.cpp文件
+  - VS.vcxproj项目文件,可以通过.unproject文件生成编译生成的Shader文件
+  - AssetRegistryCache : Asset Registry系统的缓存文件,Asset Registry可以简单理解为一个索引了所有uaset资源头信息的注册表。CachedAssetRegistry.bin文件也是如此
+6. Saved : 存储自动保存文件,其他配置文件,日志文件,引擎崩溃日志,硬件信息,烘焙信息数据等,可以删除
+7. Source : 代码文件
+
+### 项目目录结构
+
+![坐标转换](img/UE_Asset121.png)
+
+1. Engine引擎源码文件(只读),虚幻是开源项目我们可以直接在工程中看到引擎源码但是无法修改
+2. Games项目工程文件(主要编写逻辑文件),代码需要在此工程中编写。虚幻中采用了编译模块方式进行引擎构建,所以对于引擎来说,编写的内容只是一个模块,模块会被动态编译为库文件,加载到引擎中使用。Target.cs文件就是模块配置文件
+3. Visualizers虚幻4.21加入的文件,Vs配置器配置文件
+
+| 状态 | Engine | Game | 其他 |
+| --- | --- | --- | --- |
+| Debug(调试) | Debug | Debug | 必须在编译器上加-debug参数才能反射查看代码更改 |
+| DebugGame(调试游戏) | Release | Debug | 适合只调试游戏代码 |
+| Development(开发) | Release | Release | 运行编辑器发射查看代码更改 |
+| Shipping(发行) | Release | Release | 无控制台命令,统计数据和性能分析 |
+| Test(测试) | Release | Release | 启用了一些控制台命令,统计数据和性能分析 |
+
+| 目标 | |
+| --- | --- |
+| 空白 | 不带编辑器的一个独立可执行版本,需要提前打包烘焙内容资源 |
+| Editor(编辑器) | 直接在编辑器里打开游戏项目 |
+| Client(客户端) | 多人联机项目,生成客户端版本,需要提供<Game>Client.Target.cs文件 |
+| Service(服务器) | 有人联机项目,生成服务器版本,需要提供<Game>Server.Target.cs文件 |
+
+### 命名规则
+
+1. 模板类以`T`作为前缀,比如`TArray`,`TMap`,`TSet`
+2. UObject派生类都以`U`为前缀
+3. AActor派生类都以`A`为前缀
+4. SWidget派生类都以`S`为前缀
+5. 全局对象使用`G`开头,比如`GEngine`
+6. 抽象接口以`I`为前缀
+7. 枚举以`E`开头
+8. bool变量以`b`为前缀,比如`bPendingDestruction`
+9. 其他的发部分以`F`开头,比如`FString`,`FName`
+10. typedef的以原型名为前缀,比如`typedef TArry FArryOfMyTypes;`
+11. 再编辑器里和C#里,类型名是去掉前缀过的
+12. UHT再工作的时候需要提供正确的前缀,所以是约定也是规则
+
+| 类型 | 前缀 | 说明 |
+| --- | --- | --- |
+| Level/Map | L_ | 关卡 |
+| Buleprint | BP_ | 常规蓝图 |
+| Material | M_ | 材质 |
+| StaticMesh | S_ | 静态网格 |
+| Skeletal Mesh | SK_ | 骨骼网络 |
+| Texture | T_ | 纹理 |
+| Particle System | PS_ | 粒子系统 |
+| Widget Blueprint | WBP_ | 组件蓝图 |
+| ... | ... | ... |
+
+[更多命名规则](https://github.com/uejoy/ue4-style-guide)
+
+## UE的对象
+