资源

通用

资源类型 前缀 后缀
Level / Map
Level (Persistent) _P
Level (Audio) _Audio
Level (Lighting) _Lighting
Level (Geometry) _Geo
Level (Gameplay) _Gameplay
Blueprint BP_
Material M_
Static Mesh SM_
Skeletal Mesh SK_
Texture T_ _*
Particle System PS_
Widget Blueprint WBP_ or WB_

动作

资源类型 前缀
Aim Offset AO_
Aim Offset 1D AO_
Animation Blueprint ABP_
Animation Composite AC_
Animation Montage AM_
Animation Sequence AS_
Blend Space BS_
Blend Space 1D BS_
Level Sequence LS_
Morph Target MT_
Paper Flipbook PFB_
Rig Rig_
Skeletal Mesh SK_
Skeleton SKEL_

AI

资源类型 前缀
AI Controller AIC_
Behavior Tree BT_
Blackboard BB_
Decorator BTDecorator_
Service BTService_
Task BTTask_

蓝图

资源类型 前缀
Blueprint BP_
Blueprint Function Library BPFL_
Blueprint Interface BPI_
Blueprint Macro Library BPML_
Enumeration E
Structure F
Widget Blueprint WBP_

材质

资源类型 前缀
Material M_
Material (Post Process) PP_
Material Function MF_
Material Instance MI_
Material Parameter Collection MPC_
Subsurface Profile SP_
Physical Materials PM_

纹理

资源类型 前缀 后缀
Texture T_
Texture (Diffuse) T_ _D
Texture (Albedo) T_ _D
Texture (Base Color) T_ _D
Texture (Normal) T_ _N
Texture (Roughness) T_ _R
Texture (Alpha/Opacity) T_ _A
Texture (Ambient Occlusion) T_ _AO
Texture (Bump) T_ _B
Texture (Emissive) T_ _E
Texture (Mask) T_ _M
Texture (Specular) T_ _S
Texture (Packed) T_ _*
Texture Cube TC_
Media Texture MT_
Render Target RT_
Cube Render Target RTC_
Texture Light Profile TLP

杂项

资源类型 前缀 后缀
Animated Vector Field VFA_
Camera Anim CA_
Color Curve Curve_ _Color
Curve Table Curve_ _Table
Data Asset *_
Data Table DT_
Float Curve Curve_ _Float
Foliage Type FT_
Force Feedback Effect FFE_
Landscape Grass Type LG_
Landscape Layer LL_
Matinee Data Matinee_
Media Player MP_
Object Library OL_
Redirector
Sprite Sheet SS_
Static Vector Field VF_
Touch Interface Setup TI_
Vector Curve Curve_ _Vector

2D

资源类型 前缀
Paper Flipbook PFB_
Sprite SPR_
Sprite Atlas Group SPRG_
Tile Map TM_
Tile Set TS_

物理

资源类型 前缀
Physical Material PM_
Physical Asset PHYS_
Destructible Mesh DM_

声音

资源类型 前缀 后缀
Dialogue Voice DV_
Dialogue Wave DW_
Media Sound Wave MSW_
Reverb Effect Reverb_
Sound Attenuation ATT_
Sound Class SoundClasses/
Sound Concurrency _SC
Sound Cue A_ _Cue
Sound Mix Mix_
Sound Wave A_

界面

资源类型 前缀
Font Font_
Slate Brush Brush_
Slate Widget Style Style_
Widget Blueprint WBP_

目录

一个示例:

|-- Content
    |-- GenericShooter
        |-- Art
        |   |-- Industrial
        |   |   |-- Ambient
        |   |   |-- Machinery
        |   |   |-- Pipes
        |   |-- Nature
        |   |   |-- Ambient
        |   |   |-- Foliage
        |   |   |-- Rocks
        |   |   |-- Trees
        |   |-- Office
        |-- Characters
        |   |-- Bob
        |   |-- Common
        |   |   |-- Animations
        |   |   |-- Audio
        |   |-- Jack
        |   |-- Steve
        |   |-- Zoe
        |-- Core
        |   |-- Characters
        |   |-- Engine
        |   |-- GameModes
        |   |-- Interactables
        |   |-- Pickups
        |   |-- Weapons
        |-- Effects
        |   |-- Electrical
        |   |-- Fire
        |   |-- Weather
        |-- Maps
        |   |-- Campaign1
        |   |-- Campaign2
        |-- MaterialLibrary
        |   |-- Debug
        |   |-- Metal
        |   |-- Paint
        |   |-- Utility
        |   |-- Weathering
        |-- Placeables
        |   |-- Pickups
        |-- Weapons
            |-- Common
            |-- Pistols
            |   |-- DesertEagle
            |   |-- RocketPistol
            |-- Rifles
  • 使用 PascalCase 大小写规范。
  • 不要使用非 ASCII 字符。
  • 使用顶级目录来保存所有工程资源。
  • 测试用资源放在 Developers 目录下。
  • Maps 目录存储所有的地图文件。
  • Core 目录存储系统蓝图资源以及其他系统资源。
  • MaterialLibrary 目录存储材质库。
  • 不要创建名为 Assets 或者 AssetTypes 的目录(如 Textures )。
  • 超大资源要有自己的目录结构。

蓝图 & C++

蓝图尽量保持连线对齐。

编译

确保编译 0 Warnings 和 0 Errors 。
不要提交断开的孤立蓝图节点。

变量

C++ 下的变量前缀:

类型 前缀
Template T
UObject U
AActor A
SWidget S
Interface I
Enum E
Class F
Struct F
  • 使用 PascalCase 大小写规范。
  • 所有非布尔类型的变量必须使用简短、清晰并且意义明确的名词作为变量名。
  • 布尔变量需要前缀 b 。
  • 复杂状态应该考虑枚举表示而不是多个布尔组合。
  • 考虑上下文,如在 BP_PlayerCharacter 中使用 Score 而不是 PlayerScore 。
  • 数组名使用复数描述。
  • 视可编辑类型的变量作为 Public 类型变量,视不可编辑的变量作为 Protected 类型变量。
  • 尽量用 protected ,而不是 private 。
  • 如果一个变量可以被编辑,但通常不会有人碰到,那么就把它标记为 Advanced Display 。
  • Transient 表示初始值为 0 或者 nullptr 的 运行时 & 无需序列化 的变量。

函数 & 委托

  • 所有函数的命名都应该是动词,如 IsEnemy 而不是 Enemy 。
  • 属性的状态变化响应函数应该命名为 OnRep_Variable 。
  • 委托和响应函数应以 On 开头而不是 Handle ,然后遵守动词规则,过去式应移到最后。
  • RPC 函数应该用目标作为前缀,Server、 Client 或者 Multicast 。
  • 所有函数都应该 return ,即便是蓝图。

更多规范

发表评论