4.6 bt engine unreal_GitHub - beingway/ue4-style-guide: 让Unreal Engine 4工程更加规范

本文档详细介绍了Unreal Engine 4的工程规范,包括资源命名、目录结构、蓝图编译和变量命名等方面,旨在促进团队协作和项目维护效率。资源命名遵循前缀规则,如SK_用于Skeletal Mesh,M_用于Material等。目录结构提倡使用顶级目录保存所有工程资源,以工程名命名,避免全局资源。蓝图编译时应确保0警告和0错误,变量命名应使用PascalCase并考虑上下文,布尔变量前缀为b,数组使用复数形式。此外,建议使用可读性强的动词来命名函数和事件,以提高代码可维护性。
摘要由CSDN通过智能技术生成

Gamemakin UE4工程规范() {

最合理的UE4规范

为Unreal Engine 4开发的Linter插件

一套可以自动检查UE4工程规范的插件已经在虚幻商城出售。插件源码会免费提供,但为了避免编译源码,请从虚幻商城上下载该插件使用。

讨论该规范

Gamemakin LLC 有一个公开的讨论板块,地址是http://discord.gamemak.in ,如果你有关于本套规范或者插件的任何想法,都可以在其中的#linter频道中讨论。

链接到本文档

本文(英文原文)的任何章节都有数字超链接地址,你可以直接通过本文的短地址http://ue4.style 再加上章节编号,直接链接到本文的任意位置。

例如,如果你想链接到本文的第一节,可以使用地址http://ue4.style#0.1

专业术语

Levels/Maps(关卡/地图)

“map”(地图)这个词通常也会被称为“level”(关卡),两者的含义是等同的,在这里可以查看这个词的发展经历

Cases(大小写)

对于字母大小写的规范有数种,以下是几种常见的几种

PascalCase

每个单词的首字母都是大写,单词之间没有其他字符,例如 :DesertEagle, StyleGuide, ASeriesOfWords。

camelCase

第一个单词的首字母小写,后面的单词的首字母大写,例如:desertEagle, styleGuide, aSeriesOfWords。

Snake_case

单词之间用下划线链接,单词的首字母可以大写也可以小写,例如:desert_Eagle, Style_Guide, a_Series_of_Words

Variables / Properties(变量/属性)

'变量'和'属性'两个词在很多情况下是可以互相通用的。但如果他们同时出现在一个环境时,含义有一些不同:

Property (属性)

'属性'通常定义在一个类的内部。例如,如果一个类BP_Barrel有一个内部成员bExploded,那么bExploded可以是做是BP_Barrel的一个属性

当'属性'用在类的内部时,通常用来获取已经定义好的数据

Variable (变量)

'变量'通常用在给函数传递参数,或者用在函数内的局部变量

当'变量'用在类的内部时,通常是用来定义什么或者用来保存某些数据的。

0. 原则

0.1 如果你的项目已经存在现有规范,那么请继续遵守这套规范。

如果你工作的项目或你的团队已经有一套自己的规范,那么请尊重它。如果现有规范和本套规范发生冲突,请继续遵守原规范。

好的项目规范应该是不断进步的,当你发现有好的更改可以适合所有用户时,你应该建议去更改现有规范

"对规范优劣的争论是没有意义的,有规范你就该去遵守。"

0.2 不管团队中有多少人,工程中所有的数据结构、资源、代码风格应该统一,如同是同一个人的作品

把资源从一个工程迁移到另一个工程不应该产生新的学习成本,所有资源应该符合项目规范,消除不必要的歧义和不确定性

遵守规范可以促进对于项目的生产和维护效率,因为团队成员不用去考虑规范问题,只需要去遵守。本套规范根据诸多优秀经验编写,遵守它意味着可以少走很多弯路。

0.3 好哥们也得讲原则。

如果你发现同事不遵守规范,你该去纠正他

当你在团队中工作时,或者在社区提问时(例如Unreal Slackers),你会发现如果大家都遵守同一套规范会容易的多,没有人愿意在面对一堆乱糟糟的蓝图或者莫名其妙的代码时帮你解决问题。

如果你要帮助的人使用另一套不同但很健全的规范,你应该去适应它,如果他们没有遵守任何规范,那么带他们来这儿。

0.4 没有规范的团队不是真正的团队

当你要加入一个新的UE4团队时,你应该首先问他们有没有项目规范,如果没有的话,你该怀疑他们是否有能力像一个真正的团队那样工作

目录

1. 资源命名约定

对于资源的命名的规范应该像法律一样被遵守。一个项目如果有好的命名规范,那么在资源管理、查找、解析、维护时,都会有极大的便利性。

大多数资源的命名都应该有前缀,前缀一般是资源类型的缩写,然后使用下划线和资源名链接。

1.1 基本命名规则 Prefix_BaseAssetName_Variant_Suffix

时刻记住这个命名规范Prefix_BaseAssetName_Variant_Suffix,只要遵守它,大部分情况下都可以让命名规范。下面是详细的解释。

Prefix(前缀) 和 Suffix(后缀)由资源类型确定,请参照下面的资源类型表。

所有资源都应该有一个BaseAssetName(基本资源名)。所谓基本资源名表明该资源在逻辑关系上属于那种资源,任何属于该逻辑组的资源都应该遵守同样的命名规范

基本资源名应该使用简短而便于识别的词汇,例如,如果你有一个角色名字叫做Bob,那么所有和Bob相关的资源的BaseAssetName都应该叫做Bob

Varient(扩展名)用来保证资源的唯一性,同样,扩展名也应该是简短而容易理解的短词,以说明该资源在所属的资源逻辑组中的子集。例如,如果Bob有多套皮肤,那么这些皮肤资源都应该使用Bob作为基本资源名同时包含扩展名,例如'Evil'类型的皮肤资源,名字应该是Bob_Evil,而Retro类型的皮肤应该是用Bob_Retro

一般来说,如果仅仅是为了保证资源的唯一性,Varient可以使用从01开始的两位数字来表示。例如,如果你要制作一堆环境中使用的石头资源,那么他们应该命名为Rock_01, Rock_02, Rock_03等等。除非特殊需要,不要让数字超过三位数,如果你真的需要超过100个的资源序列,那么你应该考虑使用多个基础资源名

基于你所制作的资源扩展属性,你可以把多个扩展名串联起来。例如,如果你在制作一套地板所使用的资源,那么你的资源除了使用Flooring作为基本名,扩展名可以使用多个,例如Flooring_Marble_01, Flooring_Maple_01, Flooring_Tile_Squares_01。

1.1 范例

1.1e1 Bob

资源类型

资源名

Skeletal Mesh

SK_Bob

Material

M_Bob

Texture (Diffuse/Albedo)

T_Bob_D

Texture (Normal)

T_Bob_N

Texture (Evil Diffuse)

T_Bob_Evil_D

1.1e2 Rocks

资源类型

资源名

Static Mesh (01)

S_Rock_01

Static Mesh (02)

S_Rock_02

Static Mesh (03)

S_Rock_03

Material

M_Rock

Material Instance (Snow)

MI_Rock_Snow

1.2 资源类型表

当给一个资源命名的时候,请参照以下表格来决定在资本资源名前后所使用的前缀和后缀

目录

1.2.6 纹理Textures

1.2.9 物理Physics

1.2.10 声音Sound

1.2.12 特效Effects

1.2.1 通用类型

资源类型

前缀

后缀

备注

Level (Persistent)

_P

Level (Audio)

_Audio

Level (Lighting)

_Lighting

Level (Geometry)

_Geo

Level (Gameplay)

_Gameplay

Blueprint

BP_

Material

M_

Static Mesh

S_ or SM_

选一个,建议使用 S_.

Skeletal Mesh

SK_

Texture

T_

_?

参照纹理

Particle System

PS_

Widget Blueprint

WBP_ or WB_

选一个,建议使用 WBP_.

1.2.2 动作

资源类型

前缀

后缀

备注

Aim Offset

AO_

Aim Offset 1D

AO_

Animation Blueprint

ABP_

Animation Composite

AC_

Animation Montage

AM_

Animation Sequence

A_ or AS_

选一个,建议使用 A_.

Blend Space

BS_

Blend Space 1D

BS_

Level Sequence

LS_

Morph Target

MT_

Paper Flipbook

PFB_

Rig

Rig_

Skeletal Mesh

SK_

Skeleton

SKEL_

1.2.3 AI

资源类型

前缀

后缀

备注

AI Controller

AIC_

Behavior Tree

BT_

Blackboard

BB_

Decorator

BTDecorator_

Service

BTService_

Task

BTTask_

1.2.4 蓝图

资源类型

前缀

后缀

备注

Blueprint

BP_

Blueprint Function Library

BPFL_

Blueprint Interface

BPI_

Blueprint Macro Library

BPML_

可能的话尽量不要使用蓝图宏

Enumeration

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值