六一的部落格


关关难过关关过,前路漫漫亦灿灿。



已创建C++项目

通常在虚幻编辑器中创建C++类,在代码编辑器中编辑

当然可以徒手创建


创建C++类入口


方法一: 在内容浏览器中创建

  1. 显示C++类


  2. 去到C++类目录, 右键



方法二: 菜单栏工具项



方法三: 使用自定义快捷键

Control + Shift + N


配置C++类

  1. 设置基类: Actor

    • 常见类中可以直接看到Actor,以及描述信息


    • 所有类中可以看到类的派生关系


  2. 使用默认路径

  3. 类名: SimpleGeometry

  4. 设置类属性: Public

    类属性
    未设置 头文件和源文件都在Source/TheBasics目录下
    Public 会在Source/TheBasics创建Public和Private文件夹; 头文件在Public目录下,源文件在Private目录下

在编辑器中查看C++类

SimpleGeometry

  1. 内容浏览器

    Content/C++ Classes/TheBasics/Public/


  2. 双击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



  1. 版权说明

    保留所有权利

  2. 预处理指令

    确保在编译过程中,源文件只会被引入一次

  3. 包含头文件

    -
    CoreMinimal.h 定义了基本类型,常量和日志工具
    Actor.h 基类头文件
    BaseGeometryActor.generated.h 每个Actor均有,包含类的元信息(meta information);
    引擎自动生成的头文件;
    必须位于最后
  4. 类定义中使用的宏

    -
    UCLASS 定义类使用
    THEBASICS_API
    GENERATED_BODY 填充类定义

    在编译项目文件之前,UnrealBuildTool会展开这些宏生成实际代码。

    借助这些宏,我们可以在编辑器中使用C++类,创建派生自C++类的蓝图类。


SimpleGeometry类

派生自Actor

源码默认包含默认构造函数和两个虚函数,这也是最常用到的

  1. 默认构造函数

    可以设置是否每帧都要调用Tick函数

  2. BeginPlay函数

    通常在成功创建对象后,对其调用BeginPlay函数,只调用一次

    若在关卡中添加对象时,运行游戏时自动对其调用

    在代码中可以不直接创建对象,而使用SpawnActor或SpawnActorDeferred; BeginPlay的调用可能紧接构造函数,也可能在完成某些操作之后

  3. Tick函数

    每秒会刷新若干次帧,默认每次刷新帧时调用

    可以设置帧刷新间隔,即参数DeltaTime


源文件框架

SimpleGeometry.cpp





  1. 版权注释

  2. 包含头文件

  3. 默认构造函数

    若bCanEverTick为true,每一帧都会调用Tick函数

    设置该变量可起到优化效果,不一定需要每一帧都调用Tick函数

  4. Super关键字

    BeginPLay和Tick是虚函数

    虚幻C++将Super设定为基类的别名

    虚幻C++的元代码(meta code)允许我们通过Super关键字统一使用基类函数和方法


在虚幻编辑器创建C++类


已创建C++项目

通常在虚幻编辑器中创建C++类,在代码编辑器中编辑

当然可以徒手创建


创建C++类入口


方法一: 在内容浏览器中创建

  1. 显示C++类


  2. 去到C++类目录, 右键



方法二: 菜单栏工具项



方法三: 使用自定义快捷键

Control + Shift + N


配置C++类

  1. 设置基类: Actor

    • 常见类中可以直接看到Actor,以及描述信息


    • 所有类中可以看到类的派生关系


  2. 使用默认路径

  3. 类名: SimpleGeometry

  4. 设置类属性: Public

    类属性
    未设置 头文件和源文件都在Source/TheBasics目录下
    Public 会在Source/TheBasics创建Public和Private文件夹; 头文件在Public目录下,源文件在Private目录下

在编辑器中查看C++类

SimpleGeometry

  1. 内容浏览器

    Content/C++ Classes/TheBasics/Public/


  2. 双击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



  1. 版权说明

    保留所有权利

  2. 预处理指令

    确保在编译过程中,源文件只会被引入一次

  3. 包含头文件

    -
    CoreMinimal.h 定义了基本类型,常量和日志工具
    Actor.h 基类头文件
    BaseGeometryActor.generated.h 每个Actor均有,包含类的元信息(meta information);
    引擎自动生成的头文件;
    必须位于最后
  4. 类定义中使用的宏

    -
    UCLASS 定义类使用
    THEBASICS_API
    GENERATED_BODY 填充类定义

    在编译项目文件之前,UnrealBuildTool会展开这些宏生成实际代码。

    借助这些宏,我们可以在编辑器中使用C++类,创建派生自C++类的蓝图类。


SimpleGeometry类

派生自Actor

源码默认包含默认构造函数和两个虚函数,这也是最常用到的

  1. 默认构造函数

    可以设置是否每帧都要调用Tick函数

  2. BeginPlay函数

    通常在成功创建对象后,对其调用BeginPlay函数,只调用一次

    若在关卡中添加对象时,运行游戏时自动对其调用

    在代码中可以不直接创建对象,而使用SpawnActor或SpawnActorDeferred; BeginPlay的调用可能紧接构造函数,也可能在完成某些操作之后

  3. Tick函数

    每秒会刷新若干次帧,默认每次刷新帧时调用

    可以设置帧刷新间隔,即参数DeltaTime


源文件框架

SimpleGeometry.cpp





  1. 版权注释

  2. 包含头文件

  3. 默认构造函数

    若bCanEverTick为true,每一帧都会调用Tick函数

    设置该变量可起到优化效果,不一定需要每一帧都调用Tick函数

  4. Super关键字

    BeginPLay和Tick是虚函数

    虚幻C++将Super设定为基类的别名

    虚幻C++的元代码(meta code)允许我们通过Super关键字统一使用基类函数和方法