返回

在虚幻引擎 4 蓝图中生成独特的单位并查看其信息

前端

引言

在游戏开发中,生成和管理独特的单位对于创建动态且引人入胜的游戏体验至关重要。虚幻引擎 4 蓝图为我们提供了强大而灵活的工具,可以用来生成和定制单位,使其具有独特的特性和行为。

在本教程中,我们将学习如何使用蓝图在运行时生成独特的单位。我们将介绍如何获取和设置组件值,以自定义单位的属性,例如名称、网格和统计数据。此外,我们将了解如何访问单位的关键信息,例如其当前位置、生命值和攻击力。

通过掌握这些技术,您将能够为您的 UE4 项目创建复杂且可定制的单位系统,从而增强游戏玩法、角色扮演和策略元素。

先决条件

在开始本教程之前,您应该:

  • 熟悉虚幻引擎 4 蓝图系统
  • 了解基本编程概念,例如变量、函数和事件
  • 对游戏开发和单位生成有基本的了解

创建新项目

  1. 打开虚幻引擎 4 编辑器。
  2. 单击“创建新项目”按钮。
  3. 选择一个项目名称和位置。
  4. 选择“蓝图”作为目标平台。
  5. 单击“创建项目”按钮。

创建单位蓝图类

  1. 在内容浏览器中,右键单击“蓝图类”文件夹。
  2. 选择“新建”>“蓝图类”。
  3. 将蓝图类命名为“MyUnit”。

添加网格组件

  1. 在“MyUnit”蓝图中,单击“组件”选项卡。
  2. 在“添加组件”搜索框中,键入“静态网格体组件”。
  3. 将“静态网格体组件”拖放到视口中。

设置单位属性

现在,我们将添加一些属性,以便我们可以自定义单位。

  1. 在“MyUnit”蓝图的“默认值”选项卡中,单击“添加变量”按钮。
  2. 创建以下属性:
    • 名称:UnitName
    • 类型:字符串
    • 默认值:空字符串
    • 类别:自定义
  3. 重复步骤 1 和 2 以创建以下属性:
    • 名称:UnitMesh
    • 类型:静态网格体
    • 默认值:空静态网格体
    • 类别:自定义
  4. 重复步骤 1 和 2 以创建以下属性:
    • 名称:Health
    • 类型:浮点数
    • 默认值:100
    • 类别:自定义

在运行时生成单位

现在,我们将编写一个函数来在运行时生成单位。

  1. 在“MyUnit”蓝图的“函数”选项卡中,单击“添加函数”按钮。
  2. 将函数命名为“SpawnUnit”。
  3. 在“SpawnUnit”函数中,添加以下代码:
// 获取世界引用
UWorld* World = GetWorld();

// 创建单位的副本
AUnit* Unit = World->SpawnActor<AUnit>(MyUnitClass, SpawnLocation, SpawnRotation);

// 设置单位属性
Unit->UnitName = UnitName;
Unit->UnitMesh = UnitMesh;
Unit->Health = Health;

// 返回生成单位的引用
return Unit;

查看单位信息

现在,我们将编写一个函数来访问单位的关键信息。

  1. 在“MyUnit”蓝图的“函数”选项卡中,单击“添加函数”按钮。
  2. 将函数命名为“GetUnitInfo”。
  3. 在“GetUnitInfo”函数中,添加以下代码:
// 获取单位名称
FString UnitName = this->UnitName;

// 获取单位网格体
UStaticMesh* UnitMesh = this->UnitMesh;

// 获取单位生命值
float Health = this->Health;

// 返回单位信息的字符串
return FString::Printf(TEXT("名称: %s, 网格体: %s, 生命值: %.1f"), *UnitName, *UnitMesh->GetName(), Health);

在关卡蓝图中使用单位

现在,我们将前往关卡蓝图以使用我们的单位。

  1. 在内容浏览器中,双击关卡。
  2. 在关卡蓝图中,创建一个新的事件图。
  3. 将“生成单位”节点拖放到事件图中。
  4. 将“单位名称”、“单位网格体”和“单位生命值”引脚连接到相应的属性上。
  5. 将“生成单位”节点的“生成单位”引脚连接到“打印字符串”节点的“目标”引脚。

运行游戏并测试

  1. 按下播放按钮以运行游戏。
  2. 在关卡中,单位将生成并显示其信息。

结论

在本教程中,您学习了如何在虚幻引擎 4 蓝图中生成独特的单位并查看其信息。您还了解了如何获取和设置组件值,以自定义单位的属性和访问其关键信息。通过应用这些技术,您将能够为您的 UE4 项目创建更复杂且引人入胜的游戏体验。