设置和获取 Actor 引用

使用 Actor 引用在关卡中移动不同的 Actors。

Choose your operating system:

Windows

macOS

Linux

参见
本页面的内容

虚幻引擎5 中,你可以直接从 内容浏览器 创建、删除和管理资产。本页面描述了常见的资产工作流程,并解释了什么是资产引用,以及如何在编辑器中处理资产的移动或删除。此外,你将探索如何将某些类型的资产从虚幻引擎导出为可导入其他应用程序的格式。

创建资产

要创建新资产,请在 内容浏览器 的空白区域内右键单击。然后,从出现的上下文菜单中,选择要创建的资产。这将创建指定类型的空白资产。对于某些资产,例如蓝图,你可以选择其他选项,如蓝图的父类。

导入资产(即,将你在外部应用程序中制作的内容带入虚幻引擎)不同,此方法会创建一个空白资产,你可以在其中填充内容。

资产引用

如果一个资产以某种方式使用另一个资产,我们说资产相互 引用(或具有引用)。例如,如果立方体Actor使用了一个颜色材质,则该Actor引用该材质。这就是为什么在移动或重命名资产时要确保更新引用以及在删除资产之前删除对资产的任何引用很重要的原因。

查看资产引用

要查看资产的引用,请在 内容浏览器 中右键单击该资产。然后,从出现的上下文菜单中,选择 引用查看界面。将打开一个新窗口,显示资产引用的视觉效果。

有关引用查看界面的更多信息,请参阅引用查看器页面。

复制资产引用

要将一个或多个资产的引用复制到剪贴板,请在 内容浏览器 中选择一个或多个资产。然后,右键单击你的选择,然后从出现的上下文菜单中选择 复制引用(Copy Reference)

引用包含资产类型和 .uasset 文件的路径。类似于以下示例所示:

    Material'/Game/StarterContent/Materials/M_Metal_Brushed_Nickel.M_Metal_Brushed_Nickel'
    Material'/Game/StarterContent/Materials/M_Metal_Burnished_Steel.M_Metal_Burnished_Steel'
    Material'/Game/StarterContent/Materials/M_Metal_Chrome.M_Metal_Chrome'

如果你需要将资产的引用粘贴到文本字段中,或者生成资产的外部列表,这将非常有用。

替换引用工具

替换引用工具 提供了一种将多个资产组合为一个资产的方法。

有关此工具的更多信息,请参阅替换引用工具页面。

管理资产

要执行常见的资产操作,请右键单击资产,并从出现的上下文菜单中选择所需的操作。这些操作包括:

操作

描述

编辑(Edit)

在其编辑器中打开选定的资产。例如,对蓝图执行此操作会在蓝图编辑器中将其打开。

重命名(Rename)

使资产的名称可编辑。要重命名资产,请输入新名称并按Enter键。重命名资产后,虚幻引擎会将对该资产的所有引用更新为其新的名称。

复制(Duplicate)

在当前位置创建选定资产的副本。要更改副本的位置,请将其拖到另一个文件夹中。

保存(Save)

保存选定的资产。

在文件夹视图中显示(Show in Folder View)

在文件夹树中高亮显示资产的父文件夹。这对查找属于集合的资产的实际位置很有用。

在资源管理器中显示(Show in Explorer)(Windows)/在Finder中显示( Show in Finder) (Mac)

从资产在磁盘上的位置打开一个Windows资产管理器或Finder的实例。这是 .uasset 文件的位置。

切勿直接在磁盘上移动、复制或删除资产,这可能会破坏项目中的功能并导致数据损坏或丢失。应始终通过虚幻编辑器管理 .uasset 文件。

如果你要将资产从一个项目移动到另一个项目,请参阅迁移资产页面了解如何执行此操作。

移动和复制资产

你可以通过 内容浏览器 移动或复制项目中的资产和文件夹。

移动或复制资产的步骤是:

  1. 单击要移动的资产,然后将其拖到内容浏览器或文件夹树中的另一个文件夹。当你拖动资产时,将出现一个弹出窗口跟随你的鼠标光标,指示要移动的资产。

    Moving an Asset with drag-and-drop

  2. 当你松开鼠标按钮时,将出现一个菜单。

    Move Asset menu

    该菜单确认文件夹名称并包含三个选项的列表:

选项

描述

移到这里(Move Here)

将资产移动到新位置。

复制到这里(Copy Here)

在新位置创建资产的副本,并将原始资产保留在其当前位置。

高级复制到这里(Advanced Copy Here)

在新位置创建资产的副本,并尝试自动解析该资产的所有引用和依赖项。此选项包括一个额外的保存对话框,你需要在其中确认是否要保存你复制的资产。

删除资产

要删除资产,你可以:

  • 内容浏览器 中右键单击该资产。然后,从出现的上下文菜单中选择 删除(Delete)

  • 内容浏览器世界大纲视图关卡视口 中选择资产,然后按键盘上的 Delete 键。

此操作将弹出一个确认窗口。如果你的资产未被 引用(也就是说,该资产并未在你的虚幻项目中的任何地方使用),请单击 删除(Delete) 按钮进行确认:

Deletion confirmation window

如果你的资产在某处被引用,确认窗口将通知你并询问进一步的操作。可能发生两种类型的引用:

  • 如果该资产被 其他资产 引用,则表示你的项目中的另一个资产正在使用该资产。例如,如果你尝试删除某个材质,而静态网格体使用该材质,则会看到此警告。

  • 如果资产 在内存中 被引用,该资产可能在单独的编辑器窗口中打开,或者可能最近被使用过且仍缓存在内存中。

    如果你看到资产引用为零,但至少有一个内存引用,请关闭所有其他编辑器窗口并重试。如果不起作用,请保存你的工作并重新启动虚幻引擎。

在这种情况下,你有两种选择:

Deleting an Asset that still has references

  • 如果你选择 替换引用(Replace References),可选择另一个资产来替换该资产,无论其在项目中的引用位置如何。例如,如果静态网格体使用某个材质,并且你想删除该材质,你可以选择让静态网格体在删除后将使用的不同材质。

  • 如果你选择 强制删除(Force Delete),资产将被删除,而 不会 执行任何其他更正。

    这可能会导致数据损坏和数据丢失。至少,引用已删除资产的资产将无法正常工作,但这可能会破坏你的整个项目。

导出资产

项目中的资产以 .uasset 文件的形式存储在磁盘上,这是一种特定于虚幻引擎的文件格式。Exporting(导出) 资产可将其以其他应用程序可以读取的格式保存到磁盘。

要从项目中导出资产,请在 内容浏览器 中右键单击该资产。然后,从出现的上下文菜单中,选择 资产操作(Asset Actions)> 导出(Export)。这将打开一个窗口,你可以在其中命名导出的资产并选择保存位置。

可用于导出的文件类型将根据你选择的资产类型而有所不同。例如,对于静态网格体资产,你将看到导出选项为FBX、OBJ、COPY或T3D文件。

并非所有资产都可以导出。

查看以下步骤,了解 设置获取 Actor 引用的实例。

在此实例中,我们使用的是启用了 新手内容Blueprint Third Person 模板

  1. 放置Actor(Place Actors) 面板的 基本(Basic) 选项卡中,将一个 Box Trigger 拖入关卡。

    1AddTriggerBox.png

    我们将利用它触发关卡中另一个 Actor的移动。

  2. Box TriggerDetails 面板中,选择 Convert to Class Blueprint 选项。

    2ReplaceWithBlueprint.png

    我们将使用这个 Actor 创建一个 蓝图,并在其中指派一个存储引用 Actor 的变量。

  3. 为蓝图命名,然后选择 Create Blueprint蓝图编辑器 将打开)。

  4. 在蓝图编辑器中的 My Blueprint 下,点击 Add Variable 按钮。

    3AddVariable.png

  5. 点击变量,然后在 Details 面板中点击 Variable Type 按钮并在 Object Reference 下选择 Actor

    4VariableType.png

    在此我们制定引用为 Actor 类型,且为关卡中的一个 Object

  6. 将变量命名为 TargetActor 并点击 Editable 复选框。

    5NameVariable.png

    此操作将变量设为 Public,通过主编辑器窗口的 Details 面板可在此蓝图外对其进行访问和设置。该功能十分实用,无需进入蓝图即可对变量进行修改。

  7. 可输入显示文本,作为变量功能和用途的 提示文本

    7ToolTip.png

    在上图中输入的文本是 "The Actor to Target"。

  8. 点击控件蓝图编辑器窗口左上部的 Compile 按钮。

    20Compile.png

    完成编译后它将变为一个绿色勾选标记。

    21Complete.png

  9. 最小化蓝图,返回主编辑器窗口,然后在关卡中选择 Box Trigger 蓝图。

  10. 在窗口的 Details 面板中,可以在 Default 下方看到 Target Actor 变量和提示文本。

    8DetailsPanel.png

  11. 前往 Content BrowserContent/StarterContent/Shapes 路径,添加三个 Shape_Cubes 至关卡中。

    9AddingAnActor.png

    如果使用的是自建项目,则可添加任意 Actor、静止网格物体或蓝图到关卡中。

  12. 向关卡添加资源后,在每个 Actor 的 Details 面板中将其移动性设为 Moveable

    22Moveable.png

    完成此设置后,可通过蓝图脚本移动 Actor。

  13. 点击关卡中的 Box Trigger 蓝图。

  14. Details 面板中,点击 Target Actor 下的 None 框,搜索 Shape(或为 Actor(s) 添加的其他名字)。

    10DropDownSelection.png

    点击 None 将显示当前关卡中的所有 Actors,但是我们只需要将添加的方块之一作为目标。

  15. 点击放大镜图标旁边的滴管图标。

    11PickActor.png

    在视口中点击它,将从关卡中选择一个 Actor 作为目标 Actor。

  16. 将滴管图标移动至一个方块(或添加的其他资源)上,点击将其设为目标 Actor。

    11ActorSelected.png

  17. 选择 Actor 时,Target Actor 变量将更新为 Details 面板中所选的 Actor。

    13ActorSelected.png

    成为目标 Actor 的 Actor 将拥有 Set 引用。

  18. 打开 Box Trigger 蓝图,然后在 MyBlueprint 窗口中点击眼睛图标并启用 Show Inherited Variables

    showVariables.png

    此操作将在组件上添加事件。这些组件在最初将触发框转换为类蓝图时被继承。

  19. Trigger Base**下,在 CollisionComponent单击右键,选择 Add Event,然后再选择 Add OnComponentBeginOverlap**。

    14AddOverlap.png

    此操作将在图表上创建一个新的 Event 节点。

  20. 按住 Ctrl 键将 TargetActor 变量拖入图表。

    15GetActorReference.png

    此操作将创建一个 Get 节点。此节点将获取指派给变量的所有内容,而该变量已被设为关卡中的一个 Actor。

  21. 拖动 TargetActor 节点,搜索并添加一个 Add Actor Local Offset 节点。

    16AddOffSet.png

    此操作将添加当前目标的变化(可将其从当前位置移动)。

  22. 以下图所示方式连接节点,然后将 Add Actor Local Offset 节点上的 Z 轴数值设为 500.0

    17AddZValue.png

    此操作将获取目标的当前位置,并在触发框发生重叠时使目标沿 Z 轴上移 500 个单位。

  23. Components 窗口中,点击选中 TriggerBox_Blueprint

    selectTriggerBox.png

    如果 Components 窗口不存在,可使用 Window 菜单选项将其启用。

    enableComponentWindow.png

  24. 在触发框 Details 面板的 Rendering 下,取消勾选 Actor Hidden In Game 选项。

    19ActorHiddenInGame.png

    此操作将使触发框在游戏中可见,便于判定玩家从何处进入。

  25. 点击 CompileSave,然后关闭蓝图。

  26. 在主编辑器窗口中,点击 Play 图标在编辑器中开始游戏。

当您进入触发框时,选定的 Actor 将上移 500 个单位。您每次进入触发框时,该框均将上移 500 个单位。建立引用后,变量便了解应该在触发框脚本中影响哪个 Actor。尝试利用该脚本影响关卡中另一个 Actor。

  1. 在关卡视口的主编辑器窗口中点击 Box Trigger 蓝图。

  2. Box TriggerDetails 面板中,点击 Target Actor 旁的滴管图标。

    11PickActor.png

  3. 在关卡视口中点击一个从未使用的 Actor。

  4. 再次在编辑器中开始游戏。

在此情况下,每次玩家进入触发框都会使所选的新 Actor 沿 Z 轴上移 500 个单位。通过对触发框脚本中 Target Actor 变量的使用,便不会被锁定在与脚本相关的特定 Actor 中并可对其进行修改;此外无需对蓝图进行修改便可改变其影响的 Actor。

该实例说明如何将不同对象四处移动。除移动对象外,可使用该方法在玩家按键时开门、开关不同光源、生成供玩家拾取或销毁的道具、以及其他各种功能。

这也是为 Actor 获取引用的多种方式之一。如需要为玩家角色获取引用却无法在主编辑器窗口清楚地进行设置,则须使用不同方法(查看下方 相关页面 章节)。

本文基于此前的虚幻引擎版本编写,未针对当前的虚幻引擎5.0版本更新过。