codestyle-BP.md 5.5 KB
Newer Older
Bug一大队's avatar
Bug一大队 已提交
1 2
# 蓝图规范

Bug一大队's avatar
Bug一大队 已提交
3
## 蓝图介绍
Bug一大队's avatar
Bug一大队 已提交
4
蓝图是一种特殊的asset类型,它可以创建逻辑,以直观的、基于节点的方式来设置变量数据。规划可以创建自定义角色、事件、功能等,并且快速地完成Gameplay迭代。
Bug一大队's avatar
Bug一大队 已提交
5 6 7

设计蓝图还可以继承C++类、C++中定义的变量、在C++中调用函数或在C++中实现事件。

Bug一大队's avatar
Bug一大队 已提交
8
Blueprints(蓝图)是一种特殊类型的资源,它提供了一个直观的、基于节点的界面,用于创建新类型的Actor和关卡脚本事件;它为关卡设计师和游戏开发者提供了一个在虚幻编辑器中快速创建和迭代游戏可玩性的工具。
Bug一大队's avatar
Bug一大队 已提交
9

Bug一大队's avatar
Bug一大队 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
## 蓝图的存放与命名

根据蓝图的类型存放蓝图

蓝图的类型主要分为:

| 序号 | 蓝图类别   | 缩写 | 说明 |
| ---- | ---------- | ---- | :--- |
| 01   | 蓝图Actor  | BP   |      |
| 02   | 蓝图结构   | BPS  |      |
| 03   | 蓝图枚举   | BPE  |      |
| 04   | 蓝图接口   | BPI  |      |
| 05   | 蓝图函数库 | BFL  |      |
| 06   | 蓝图宏库   | BML  |      |

## 蓝图的描述信息和蓝图分类

给蓝图资源添加蓝图描述和蓝图分类,可以帮助其他人或将来的自己快速了解该蓝图的功能。

![在这里插入图片描述](https://img-blog.csdnimg.cn/ed146f9dab8945c8bc7f26dc41f11990.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/fc2e3510a0504ca292e5e48024cab2d7.png)

## 蓝图功能划分和蓝图层级

使用基类和子类的方式划分蓝图功能:采用这种面向对象的编程思想,可以便于后期的功能扩展。可以减轻单个蓝图的复杂度。

![在这里插入图片描述](https://img-blog.csdnimg.cn/3d162b2ab79e4edd9d5eaa37597163c7.png)

对于蓝图Actor,可以根据实际的蓝图功能,将某些蓝图功能划分到蓝图组件中。

![在这里插入图片描述](https://img-blog.csdnimg.cn/1071e01cd2714fb483478fac401397c7.png)

## 蓝图函数分类、变量分类

避免在蓝图中使用大函数(一个函数包含太多蓝图结点),而是将大函数分割成多个小函数。

蓝图函数的主要分类为:

- **Private**:只有本蓝图能使用的函数;子类蓝图不能重载(但可以调用);其他蓝图不能调用。
- **Public**:本蓝图可以使用;子类蓝图可以重载或调用;其他蓝图不能调用。
- **Interfaces**:本蓝图可以使用;子类蓝图可以重载或调用;其他蓝图可以调用。

如下面的“**Add(CustomMoveingPlatform)**”函数所示。将其分类为“Public”,用于表示该函数主要用于子类蓝图的重载。

![在这里插入图片描述](https://img-blog.csdnimg.cn/01e96c6e94684db1a79e8e00760d4667.png)

蓝图的变量的类别可以分为:**Public****Private。**

- **Public**:本蓝图可以使用;子类蓝图可以使用;其他蓝图可以使用;如果需要在蓝图实例的属性面板中配置该变量,则需要将该蓝图变量的右边眼睛点亮。
- **Private**:本蓝图可以使用;子类蓝图可以使用。

**Private**变量下又分出**Cache**变量。**Cache**变量是在功能执行过程中,用来存储中间结果的变量。

![在这里插入图片描述](https://img-blog.csdnimg.cn/f2c84a49f2d54bfb95b921d3c9052499.png)

在蓝图函数内部,使用局部变量可以减轻蓝图函数的连线复杂态度。

- 将函数的参数保存为局部变量,在使用该参数时,可以减少连线长度和数量。 
- 将Pure函数输出的结果存储为局部变量,可以减少对Pure函数的调用次数(尤其是在多次调用Pure函数对性能影响很大的情况下)。
-  将函数返回节点需要的返回值存储为局部变量,可以减少连线长度和布局复杂度。

![在这里插入图片描述](https://img-blog.csdnimg.cn/0683d2b6d9e74acbbaa227aefef594de.png)

## 添加注释

在你觉得需要注释的地方添加合适的注释,并用标号、颜色、字号加以标识。

![在这里插入图片描述](https://img-blog.csdnimg.cn/3a25c1a7748a40c789ca2c21e75d92d6.png)

## 函数的命名与变量的命名

函数和变量的命名要直接明了。可以适当给给函数添加用于阐释函数功能和注意事项的描述(Description)。

![在这里插入图片描述](https://img-blog.csdnimg.cn/0a11e334969c4381b4ca220b1e66721a.png)

## 排版布局

建议不要使用UE4引擎没有默认启用的第三方插件来进行排版布局。因为会增加蓝图对其他第三方插件的依赖性,可能会导致其他人使用你的蓝图时,出现布局混乱的情况。

可以使用UE4提供的蓝图排版布局功能,如下所示。可以在编辑器属性面板中,为排版布局功能设置个性化的快捷键。

![在这里插入图片描述](https://img-blog.csdnimg.cn/efcef5a0b9cc4843b90b1d7557ec8718.png)

## 辅助工具

### 查找引用

为了便于快速查找哪些地方使用了某个函数或变量,可以使用下面的“Find References”功能。

![在这里插入图片描述](https://img-blog.csdnimg.cn/987ba2527fe04dfda6364be023f98260.png)

也可以在其他蓝图中,查找函数或变量。

![img](https://pic2.zhimg.com/80/v2-8f9904ba97016546bcdda2e8d96ff861_1440w.png)

### 调试

运行时,可以使用下面的“**Debug**”或“**Blueprint Debugger**”调试工具,调试蓝图代码。

![在这里插入图片描述](https://img-blog.csdnimg.cn/c1fb321d11224c228d1b7d312c1783fd.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/817d279453c347e3a8f056902452445b.png)