在虚幻编辑器创建C++类
2024年1月7日 2024年1月17日
已创建C++项目
通常在虚幻编辑器中创建C++类,在代码编辑器中编辑
当然可以徒手创建
创建C++类入口
方法一: 在内容浏览器中创建
-
显示C++类
-
去到C++类目录, 右键
方法二: 菜单栏工具项
方法三: 使用自定义快捷键
Control + Shift + N
配置C++类
-
设置基类: Actor
-
常见类中可以直接看到Actor,以及描述信息
-
所有类中可以看到类的派生关系
-
-
使用默认路径
-
类名:
SimpleGeometry
-
设置类属性:
Public
类属性 未设置 头文件和源文件都在Source/TheBasics目录下 Public 会在Source/TheBasics创建Public和Private文件夹; 头文件在Public目录下,源文件在Private目录下
在编辑器中查看C++类
SimpleGeometry
-
内容浏览器
Content/C++ Classes/TheBasics/Public/
-
双击C++类会跳转到代码
在关卡中添加SimpleGeometry对象
拖动C++类到视口,可在世界大纲查看新增物体
不具有变换属性
在世界大纲中选中实例,按下F键定位(Focus)
项目结构
使用XCode打开项目
工程中包含两个子项目
子项目 | 说明 | 路径 |
---|---|---|
Engine | 引擎代码 | EpicGames/UE_5.1/Engine/ |
Game | 项目代码 | Projects/5.1.1/TheBasics/ |
源码文件夹
TheBasics/Source
存放项目源码
C++类
Games/Source/TheBasics
SimpleGeometry | |
---|---|
头文件 | Source/TheBasics/Public/SimpleGeometry.h |
源文件 | Source/TheBasics/Private/SimpleGeometry.cpp |
C++类源码阅读
头文件框架
SimpleGeometry.h
-
版权说明
保留所有权利 -
预处理指令
确保在编译过程中,源文件只会被引入一次 -
包含头文件
- CoreMinimal.h 定义了基本类型,常量和日志工具 Actor.h 基类头文件 BaseGeometryActor.generated.h 每个Actor均有,包含类的元信息(meta information); 引擎自动生成的头文件; 必须位于最后 -
类定义中使用的宏
- UCLASS 定义类使用 THEBASICS_API GENERATED_BODY 填充类定义 在编译项目文件之前,UnrealBuildTool会展开这些宏生成实际代码。
借助这些宏,我们可以在编辑器中使用C++类,创建派生自C++类的蓝图类。
SimpleGeometry类
派生自Actor
源码默认包含默认构造函数和两个虚函数,这也是最常用到的
-
默认构造函数
可以设置是否每帧都要调用Tick函数 -
BeginPlay函数
通常在成功创建对象后,对其调用BeginPlay函数,只调用一次若在关卡中添加对象时,运行游戏时自动对其调用
在代码中可以不直接创建对象,而使用SpawnActor或SpawnActorDeferred; BeginPlay的调用可能紧接构造函数,也可能在完成某些操作之后
-
Tick函数
每秒会刷新若干次帧,默认每次刷新帧时调用可以设置帧刷新间隔,即参数DeltaTime
源文件框架
SimpleGeometry.cpp
-
版权注释
-
包含头文件
-
默认构造函数
若bCanEverTick为true,每一帧都会调用Tick函数设置该变量可起到优化效果,不一定需要每一帧都调用Tick函数
-
Super关键字
BeginPLay和Tick是虚函数
虚幻C++将Super设定为基类的别名
虚幻C++的元代码(meta code)允许我们通过Super关键字统一使用基类函数和方法