蓝图变量

保存值或参考世界场景中的对象或Actor的属性。

Windows
MacOS
Linux

Variables(变量) 是保存值或参考世界场景中的对象或Actor的属性。这些 属性可以由包含它们的 蓝图(Blueprint) 通过内部方式访问,也可以 通过外部方式访问,以便设计人员使用放置在关卡中的蓝图实例 来修改它们的值。

变量显示为包含变量名称的圆形框:

Variable Nodes

变量类型

变量能够以各种不同的类型创建,其中包括数据类型(例如布尔、整数和浮点),以及用于保存对象、Actor和特定类等对象的引用类型。 此外,您还可以创建每种变量类型的阵列 。每种类型都采用颜色编码,以便于识别:

变量类型

颜色

范例

表示

布尔(Boolean)

栗色

RedWire.png

true或false值(bool)。

字节(Byte)

夏尔巴蓝色

get-byte-variable-icon.png

0与255之间的整数值(unsigned char)。

整数(Integer)

海绿色

CyanWire.png

−2,147,483,648与2,147,483,647之间的整数值(int)。

64位整数(Integer64)

苔绿色

get-integer64-variable-icon.png

−9,223,372,036,854,775,808与9,223,372,036,854,775,807之间的整数值(long)。

浮点(Float)

黄绿色

GreenWire.png

例如0.0553、101.2887、-78.322等带小数的数值(float)。

命名(Name)

淡紫色

get-name-variable-icon.png

用于在游戏中识别事物的一段文本。

字符串(String)

洋红色

MagentaWire.png

例如 Hello World 之类的一组字母数字字符(string)。

文本(Text)

粉色

PinkWire.png

向用户显示的文本。针对要本地化的文本使用此类型。

矢量(Vector)

金色

GoldWire.png

三个数字组成的集(X、Y、Z)。此类型对3D坐标和RGB颜色数据很有用。

旋转体(Rotator)

菊蓝色

PurpleWire.png

定义3D空间中旋转的一组数字。

变形(Transform)

橙色

OrangeWire.png

结合平移(3D位置)、旋转和缩放的数据集。

对象(Object)

蓝色

BlueWire.png

如光源、Actor、静态网格体、摄像机和SoundCue等蓝图对象。

我的蓝图(My Blueprint)选项卡中的变量

我的蓝图(My Blueprint)选项卡允许将自定义变量添加到蓝图,并列出所有现有变量, 包括在组件列表 中添加的组件实例变量, 或通过将值提升到图表中的变量而创建的变量。

My BLueprint Pane

创建变量

按照以下步骤操作即可实现在蓝图中创建变量。

  1. 创建蓝图 并将其打开到 图表(Graph) 选项卡。

  2. 通过单击变量列表标头 myblueprint_variable.png 上的by clicking on the Add Button plus_Button.png 上的 添加按钮(Add Button) plus_Button.png ,从 我的蓝图(MyBlueprint) 窗口创建一个新变量。

    MyBlueprintPane_createVar.png

  3. 一个新变量随即创建,同时提示您输入它的名称。

    HT5.png

    输入变量的名称,然后进入 细节(Details) 面板以调整变量的属性。

  4. 细节(Details) 面板中,有几个设置可用于定义如何使用或访问变量。

    HT6.png

    若要为变量设置 默认值(Default Value),您必须先 编译(Compile) 蓝图。

选项

描述

变量名称(Variable Name)

变量的命名。

变量类型(Variable Type)

通过下拉菜单设置变量类型 ,并决定变量是否为阵列

可编辑实例(Instance Editable)

变量在蓝图的实例上是否可公开编辑。

只读蓝图(Blueprint Read Only)

蓝图节点能否设置此变量;或此变量为只读时能否设置。

提示文本(Tooltip)

有关此变量的额外信息,光标悬停在此变量上时显示。

显示3D控件(Show 3D Widget)

为true时,用户可通过视口中的3D变换控件调整向量变量。此选项将应用于向量和变换类型,仅在选中 可编辑实例(Instance Editable) 后启用。

生成时公开(Expose on Spawn)

生成蓝图时是否将变量公开为引脚。

私有(Private)

变量是否为私有(派生蓝图无法进行修改)。

向过场动画公开(Expose to Cinematics)

是否应将变量是否应向 SequencerMatinee 公开以修改变量。

配置变量(Config Variable)

允许使用配置文件设置变量。

类别(Category)

允许通过给定标签对变量进行分类。将按其标签排序变量。

复制(Replication)

此变量是否应通过网络进行复制

还有一些序列化选项可以通过展开 细节(Details) 面板来定义。

HT37.png

在这里,您可以使用 临时(Transient) 选项设置变量是否序列化以及在加载时是否以零填充。您还可以使用 保存游戏(SaveGame) 选项为保存的游戏设置变量是否序列化。

公开变量

要在蓝图之外修改变量,需将其设为公开。

HT21.png

眼睛默认为闭合(私有);选择眼睛以将其打开并设为公开。也可选中或清除 可编辑实例(Instance Editable) 框,将变量设为私有或公开。

将变量设为公开后,可在主编辑器窗口的 细节(Details) 面板中修改变量的值。

HT23.png

上面,变量 光源颜色(LightColor) 已被设置为可编辑( Editable),我们现在可以在关卡编辑器的 细节(Details) 面板中设置此值。

变量提示文本

您还可以为变量添加 提示文本(Tooltip),当鼠标在编辑器中悬停于变量之上时,将显示此提示文本。

HT25.png

您可以从变量的 细节(Details) 面板中添加 提示文本(Tooltip)。当您执行此操作时,如果变量设置为 公开(Public),那么眼睛(Eye)图标将从黄色变为绿色,表示已为该变量编写提示文本。

HT24.png

生成时公开

生成时公开(Expose on Spawn) 允许您设置变量是否应在生成其所在的蓝图时可访问。

HT26.png

上面我们有一个名为 光源颜色(LightColor) 的变量,它是一个设置为 生成时公开(Expose on Spawn) 的线性颜色属性。该变量在点光源的蓝图中实现,点光源使用 设置光源颜色(Set LightColor) 节点和 光源颜色(LightColor) 变量来确定光源的颜色。

下面,在另一个蓝图中,使用一个脚本来生成点光蓝图,由于 光源颜色(LightColor) 变量设置为生成时公开(Expose on Spawn),所以 从类生成Actor(Spawn Actor from Class) 节点上提供了设置此值的选项,这使我们能够在游戏世界中生成光源时设置其颜色。

HT27.png

私有变量

通过在变量上选中 私有(Private) 选项,可以防止从外部蓝图修改变量。

例如,下面有一个未设置为私有的变量:

HT42.png

在另一个蓝图中,我们生成包含此变量的蓝图,然后关闭 返回值(Return Value),结果是我们可以访问此变量。

HT43.png

但如果我们将它设置为私有:

HT41.png

然后再次生成蓝图并尝试访问此变量,结果是我们无法访问。

HT44.png

向过场动画公开

若需要 SequencerMatinee 影响变量的值,选择 向过场动画公开(Expose to Cinematics)

欲了解Sequencer的详情,参阅Sequencer 编辑器

自4.23版本起,UE4不再支持Matinee,该功能近期将从引擎中移除。移除后,不可再运行Matinee或打开Matinee编辑器
请使用Matinee到Sequencer转换工具 尽快将所有文件转换成Sequencer。

提升为变量

您还可以使用 提升为变量(Promote to Variable) 创建变量。

右键单击蓝图节点上的任何输入或输出数据引脚,并选择 提升为变量(Promote to Variable) 选项。

HT38.png

通过在 新光源颜色(New Light Color) 引脚上单击右键并选择 提升为变量(Promote to Variable) 选项,我们可以将一个变量指定为 新光源颜色(New Light Color) 值。

HT40.png

或者,您可以拖出一个输入或输出引脚,并选择 提升为变量(Promote to Variable)

HT39.png

访问蓝图中的变量

在使用蓝图中的变量时,您会通过以下两种方式之一访问它们:通过使用 获取(Get) (被称为Getter)来获取变量的值,或使用 设置(Set) 节点(被称为Setter)来设置变量的值。

HT45.png

您可以通过在图表中单击右键并键入 Set (变量名) Get (变量名),为变量创建一个 设置(Set) 节点(上面1)或 获取(Get) 节点(上面2)。另一种方法是按住 Ctrl 键并将变量从 我的蓝图(MyBlueprint) 窗口拖动变量来创建一个 获取(Get) 节点,或者按住 Alt 键并从 我的蓝图(MyBlueprint) 窗口中拖动变量来创建一个 设置(Set) 节点。

编辑变量

您可以在执行之前将变量值设置为蓝图节点网络的一部分或默认值。若要设置变量默认值:

  1. 单击蓝图编辑器工具栏上的 类默认(Class Defaults),以在 细节(Details) 面板中打开默认设置(Defaults)。

  2. 细节(Details) 面板中,从变量名称右侧输入所需的默认值。

    blueprint_details_variable_callout.png

    上面我们突出显示了颜色(Color)变量,我们可以在其中设置其默认颜色。

如果您没有看到变量在默认中列出,请确保单击了 编译(Compile) 按钮。

重命名变量

若要重命名变量:

  1. 我的蓝图(My Blueprint) 选项卡中右键单击变量名称,然后在出现的菜单中选择 重命名(Rename)

    rename_variable_menu.png

  2. 在文本框中键入新的变量名称,然后按 Enter

    rename_variable.png

变量属性

您可以在 细节(Details) 面板中为变量设置所有属性。有些变量可能具有比此处所示更多的属性,例如,对于矢量,有 公开到过场动画(Expose to Cinematics),对于整数或浮点数等数字变量,有 滑块范围(Slider Range)

属性

说明

变量类型(Variable Type)

在下拉菜单中设置变量类型,并确定变量是否为阵列。

可编辑实例(Instance Editable)

设置可否在 类默认(Class Defaults) 和蓝图的 细节(Details) 选项卡中编辑变量的值。

提示文本(Tooltip)

为变量设置提示文本。

私有(Private)

设置该变量是否应为私有且是否不应由派生蓝图修改。

类别(Category)

从现有类别中选择,或键入一个新的类别(Category)名称。设置类别(Category)确定变量在 类默认(Class Defaults)我的蓝图(My Blueprint)选项卡和蓝图的 细节(Details) 选项卡中所处的位置。

复制(Replication)

选择变量的值是否应在客户端之间复制,以及如果复制该值,是否应通过回调函数发出通知。

变量高级属性

属性

描述

配置变量(Config Variable)

在配置文件中读取默认值(若存在)?利用此选项可自定义不同项目和配置间的变量默认值和行为。

临时(Transient)

加载时不进行序列化且以零填充。

游戏存档(SaveGame)

针对游戏存档进行序列化。

高级显示(Advanced Display)

默认在类默认窗口中隐藏。

多行(Multi line)

可显示多行。要在编辑变量时新增行,同时按下Shift+Enter。

注意:此选项仅适用于 字符串文本 变量。

废弃(Deprecated)

废弃消息(Deprecation Message)

进行废弃。任何引用变量的节点将生成编译器警告,表明应删除或替换此变量。

(可选)可指定消息来包含此提醒。例如:不再支持X。请用Y替代。

获取和设置变量值

您还可以通过获取(Get)和设置(Set)节点的方式将变量作为蓝图网络的一部分进行编辑。最简单的创建方法是将变量直接从变量(Variables)选项卡拖至事件图表(Event Graph)中。一个小菜单随即出现,询问您是否要创建获取(Get)或设置(Set)节点。

VariableGetSet.png

获取(Get)节点

获取(Get)节点提供具有变量值的网络部分。完成创建后,您可以将这些节点插入任何具有适当类型的节点。

GetVariable.png

设置(Set)节点

设置(Set)节点允许更改变量的值。请注意,这些节点必须由执行线调用才能执行。

SetVariable.png

从我的蓝图选项卡拖动时的快捷方式(Shortcuts when dragging from the My Blueprint tab)

Ctrl-拖动

创建获取(Get)节点。

Alt-拖动

创建设置(Set)节点。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback