目录
引擎中每个游戏类都由一个类头文件(.h)和一个类源文件(.cpp)构成;类头包含类和类成员(如变量和函数)的声明,而在类源文件中是类功能的实现;引擎中的类拥有一个标准化的命名方案,通过首字母或前缀即可立即明了其为哪种类;
| Prefix | Meaning |
|---|---|
| A | 从可生成的游戏对象的基础类进行延伸;它们是 Actor,可直接生成到世界场景中; |
| U | 从所有游戏对象的基础类进行延伸;它们无法被实例到世界场景中,必须从属于 Actor;总体而言,它们是相似组件的对象; |
一,Adding Classes
主菜单Tools > New C++ Class...是一种快速简便的方法,将本机C++代码类添加到项目中,以便根据需要扩展功能;这会将纯内容项目转换为代码项目;确保安装了兼容版本的Visual Studio;


二,Class Headers
引擎中的游戏类通常拥有单独且唯一的类头文件;通常这些文件的命名与其中定义的类相匹配,减去 A 或 U 前缀,并使用 .h 文件扩展名;因此,AActor 类的类头文件命名为 Actor.h;虽然 Epic 代码遵循这些规则,但当前引擎中类名称和源文件名之间不存在正式关系;
游戏类的类头文件使用标准 C++ 语法,并结合专门的宏,以简化类、变量和函数的声明过程;
在每个游戏类头文件的顶端,需要包含生成的头文件(自动创建);因此在 ClassName.h 的顶端必须出现以下行:
#include "ClassName.generated.h"
Class Declaration
类声明定义类的名称、其继承的类,以及其继承的函数和变量;类声明还定义了其他引擎和编辑器的特定行为(通过类说明符和元数据);
UCLASS([specifier, specifier, ...], [meta(key = value, key = value, ...)])
class ClassName : public ParentName
{
GENERATED_BODY()
}
声明包含一个类的标准 C++ 类声明;在标准声明之上,描述符(如类说明符和元数据)将被传递到 UCLASS 宏;它们用于创建被声明类的 UClass,可被看作引擎对类的专有表达;此外,GENERATED_BODY() 宏必须被放置在类体的最前方;
Class Specifiers
| Class Specifier | Effect |
| Abstract | 将类声明为"抽象基类",不可向关卡中添加此类的Actor;对于单独存在时没有意义的类,此说明符非常有用;如,ATriggerBase基类是抽象类,而ATriggerBox子类不是抽象类,可以放置在关卡; |
| AdvancedClassDisplay | 强制类的所有属性仅在显示在细节面板的"高级(Advanced)"部分; |
| AutoCollapseCategories=(Category1, Category2, ...) | 使父类上的 AutoExpandCategories 说明符列出类别的效果无效; |
| AutoExpandCategories=(Category1, Category2, ...) | 为此类的对象指定应自动在编辑器属性窗口中展开的一个或多个类别;要自动展开未使用类别声明的变量,请使用声明变量的类的名称; |
| Blueprintable | 将此类公开为用于创建蓝图的可接受基类;默认为NotBlueprintable,除非继承时就并非如此;此说明符由子类继承; |
| BlueprintType | 将此类公开为可用于蓝图中变量的类型; |
| ClassGroup=GroupName | 指示在编辑器的Actor浏览器中启用 组视图(Group View) 时,Actor浏览器 应在指定的 GroupName 中包含此类及此类的所有子类; |
| CollapseCategories |

最低0.47元/天 解锁文章
1373

被折叠的 条评论
为什么被折叠?



