Skip to content

基于UHT头文件创建类

一旦我们有了UHT头文件,我们可以使用它们在UE项目中构建相关类,然后在蓝图模组中使用这些类、变量、方法和数据对象。

[!NOTE] 本指南不会涵盖所有情况,仅提供单个类、变量和方法的基本示例。

在这个例子中,我将为Trepang2制作一个模组,让玩家在处决敌人时恢复25%的生命值。
类似于《毁灭战士》中玩家处决敌人后恢复生命值的机制。

研究

我们首先需要确定将用于模组的类以及我们将使用的方法和/或变量。

查看玩家蓝图,可以看到生命值是从父类BaseCharacter中调用的。

假设我们已经有了UHT头文件,查找类头文件,在这种情况下是BaseCharacter.h

[!IMPORTANT] 如果你没有UHT头文件,请参考导出UHT指南。

向下滚动,我们可以找到健康相关的方法,包括最大生命值获取器和生命值设置方法。

虚幻引擎 - 创建类

[!NOTE] 如果你看不到或无法添加C++类,你需要重新创建项目并启用C++设置。

  1. 启动UE项目并通过文件 -> 新建C++类创建一个新的C++类。
  2. 对于父类,将其设置为Character类。
    • 你可以在头文件类声明行中看到基类。
    • 如果列表中没有该类,沿着类层次结构向下查找,直到找到原生UE类。

[!TIP] 根据项目的规模,你可以重新创建完整的层次结构或直接使用基类。 这意味着如果你有ClassA -> ClassB -> Character,"直接"意味着ClassA -> Character(跳过中间类)。 而"完整"意味着全部都要一个接一个地创建。

  1. 点击下一步,并将其命名为与头文件完全相同的名称。
  2. 将其设为Public并点击创建类。

Visual Studio

  1. 创建类后,Visual Studio将被启动,并带有两个新对象;带有给定类名的.cpp.h文件(BaseCharacter.cppBaseCharacter.h)。
  2. BaseCharacter.cpp文件中,删除除了#include "BasePlayer.h"之外的所有内容。
  3. BaseCharacter.h中,删除在创建时自动添加的任何方法和变量(我们不需要它们)。

  1. 添加与导出的头文件中相同的类标签。

[!TIP] 注意每个项目的声明字段/标签。

  1. 现在添加你感兴趣的方法和变量。

关于方法/函数

头文件中的每个方法都需要返回其类型的默认值。
几个例子:

  • 对于布尔值,添加{return false;};
  • 对于浮点数或整数,添加{return 0;};
  • 对于void,添加{};

[!NOTE] 如果是自定义类型,则需要先重新创建它,然后才能使用。

编译

要编译项目,右键点击解决方案资源管理器中的项目名称,然后选择"生成解决方案"。

如果一切操作正确,构建将成功完成。

[!NOTE]
构建失败是很常见的,可能由无数原因导致,恐怕我无法在本指南中一一介绍。

回到虚幻引擎

返回到虚幻引擎编辑器中的模组蓝图。
现在你应该能够访问这些类中对应的变量和方法了。

在这个例子中,它是玩家角色,我可以将其转换并访问其所有C++内容。

现在我们可以在蓝图模组中正确使用C++类中的方法和变量。
在这个例子中,玩家的生命值会在处决敌人时通过一个可配置的百分比进行设置。

结果

最终的模组可以在这里找到:
Trepang2 - 处决敌人时恢复生命值