Distribution 是提供灵活性的一组数据类型,它们允许常量值、在某个范围内的随机值、沿某个曲线的插值以及由参数驱动的数值。这些数据类型通常在粒子系统的属性和Sound Cue中的节点中使用。
尽管这些区域在编辑器中按字母顺序排列,但在此处我们按照复杂程度列出它们。这样做是为了帮助不熟悉此概念的人员理解它。
Distribution烘焙
无论使用哪种类型的Distribution,你始终会在其下面看到 可被烘焙(Can be Baked) 选项。此选项会确定Distribution的数值结果是否可被烘焙到查找表中。相较于动态计算随机值或曲线插值,将数值烘焙到查找表中要高效得多。因此,默认启用此选项。
假如你碰到查找表会导致关键信息丢失的极端情况,可以取消选中此选项,以使系统在每次更新时检查实际值。当然,这种方法不是很高效,但是在你需要实现重要查找而查找表行不通的极少数情况下,此选项非常值得考虑。

Distribution类型
大部分粒子属性使用 DistributionFloat 和 DistributionVector 类型,以在创建粒子系统时实现最大的灵活性。使用Distribution类型时的可用选项有多个,我们将在下面的部分中详细介绍它们。
请注意,值的实际使用情况会因使用它的属性而异。例如,粒子的初始大小(Initial Size)在粒子生成时确定。如果针对该属性,Distribution类型设置为常量曲线,那么,将使用生成时的发射器时间从曲线检索所需数值。
浮点Distribution
当存在美工控制的标量属性时,使用浮点Distribution。示例包括粒子的生命周期或发射器的生成速率。
DistributionFloatConstant
此类型用于为常量属性提供值。下面是该值在数轴上的图形表示。

- 不会变化的常量浮点值。
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

DistributionFloatConstant属性 | |
---|---|
项目 | 说明 |
常量(Constant) | 给定属性的静态和不变数量。 |
DistributionFloatUniform
此Distribution类型用于为属性提供值的范围。求值时,返回值将在所选择的范围内随机设定。

- 最小数值。
- 最大数值。
- 从中选择随机值的范围。
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

DistributionFloatUniform属性 | |
---|---|
项目 | 说明 |
最小值(Min) | 随机计算的最小数值。 |
最大值(Max) | 随机计算的最大数值。 |
DistributionFloatConstantCurve
此类型用于为随时间推移在图表编辑器上绘制的属性提供值。时间是绝对的(在发射器生命周期期间)还是相对的(在单个粒子的生命周期期间)取决于使用该Distribution的模块。

- 关键帧点。
- 插值曲线。最终值将基于此曲线上给定时间的数值拉取。
- 切线图柄——它们定义曲线流入和流出关键帧的方式。
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

请注意,虽然所有这些字段都可手动编辑,但是我们建议你使用曲线编辑器窗口编辑这些数值。
DistributionFloatConstantCurve属性 | |
---|---|
项目 | 说明 |
点(Points) | 包含曲线上所有点的数组属性。你可以使用 ![]() |
点属性 | |
InVal* | 点在图表横轴上的位置,通常作为时间计算。 |
OutVal* | 点在图表纵轴上的位置,通常作为属性值计算。 |
到达切线(ArriveTangent)* | 规定点的传入切线的角度。有用值范围大约介于-150到150之间。 |
离开切线(LeaveTangent)* | 规定点的传出切线的角度。有用值范围大约介于-150到150之间。 |
插值模式(InterpMode) | 允许用户在各种适用于曲线的插值模式间进行选择。请参阅曲线编辑器用户指南页面,以获取更多详细信息。 |
DistributionFloatUniformCurve
此类型用于为随时间推移在图表编辑器上绘制的属性提供值的范围。在每个时间点上,选择最小值曲线和最大值曲线范围内的随机值。

- 最小值曲线——它定义随时间推移变化的最小数值。
- 最大值曲线——它定义随时间推移变化的最大数值。
- 产生的范围——在每个时间点上,从中选择最终值的图表区域。
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

与ConstantCurve类型一样,建议通过曲线编辑器编辑此Distribution类型。
DistributionFloatUniformCurve属性 | |
---|---|
项目 | 说明 |
点(Points) | 包含曲线上所有点的数组属性。你可以使用 ![]() |
点属性 | |
InVal* | 点在图表横轴上的位置,通常作为时间计算。 |
OutVal* | 点在图表纵轴上的位置,通常作为属性值计算。对于均匀曲线(Uniform Curve),此属性将包含X和Y值,分别代表输出的最小值和最大值。 |
到达切线(ArriveTangent)* | 规定点的传入切线的角度(X和Y(最小值和最大值))。有用值范围大约介于-150到150之间。 |
离开切线(LeaveTangent)* | 规定点的传出切线的角度(X和Y(最小值和最大值))。有用值范围大约介于-150到150之间。 |
插值模式(InterpMode) | 允许用户在各种适用于曲线的插值模式间进行选择。请参阅曲线编辑器用户指南页面,以获取更多详细信息。 |
DistributionFloatParticleParam
此类型用于允许对发射器参数进行简单的游戏代码设置,以便能够通过代码、蓝图或Matinee操纵它们。它提供将输入值从一个范围映射到另一个范围的功能,允许你在“级联-空间”中调整参数,而无需更新游戏性代码。在游戏性编程人员确定既定的输入(Input)范围之后,美工便可以通过输出(Output)映射自由调整属性了。
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

输入(Input)到输出(Output)将被线性重新映射,因此:MinInput为0时MaxInput为5,MinOutput为0时MaxOutput为100,这意味着如果你传递2作为输入,则输出将为40。
如果设置映射到多个输出的简单0-1输入,它非常有用,因为你可以通过名称共享粒子参数变量。例如,你可以将SpawnRate设置为由粒子参数Foo(Particle Parameter Foo)驱动,并从0-1范围中设置输入,从20-200范围中设置输出,并且,你也可以在InitialSize中使用Foo并将输入设置为相同的数值,但从10-20范围中设置输出。
编程人员将编写与以下类似的代码:
ParticleComponent->SetFloatParameter('MyParameter', CurrentParameter);
DistributionFloatParticleParameter属性 | |
---|---|
项目 | 说明 |
参数名称(Parameter Name) | 在代码或蓝图脚本中引用参数时使用的名称。 |
最小输入(Min Input) | 可以传入(通常通过游戏代码)Distribution的最小数值。 |
最大输入(Max Input) | 可以传入(通常通过游戏代码)Distribution的最大数值。 |
最小输出(Min Output) | 可以输出到(通过从输入范围映射)级联的最小数值。 |
最大输出(Max Output) | 可以输出到(通过从输入范围映射)级联的最大数值。 |
参数模式(Param Mode) | 它控制使用输入值的方式。请参阅下面的“参数模式(Param Mode)标记”表。 |
常量(Constant) | 为系统规定不存在输入时的默认值。 |
参数模式(Param Mode)标记 | 说明 |
---|---|
DPM_Normal | 不对输入值产生影响。 |
DPM_Abs | 使用重新映射前输入值的绝对值。 |
DPM_Direct | 直接使用输入值(不重新映射)。 |
矢量Distribution
当存在美术控制的基于矢量的属性时,使用矢量Distribution。例如,粒子的大小或速度。
DistributionVectorConstant
此类型用于为常量属性提供值。

- X轴数值
- Y轴数值
- Z轴数值
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

锁定轴(LockedAxes)标记允许用户将一个轴的数值锁定到另一个轴的数值。支持以下标记:
DistributionVectorConstant属性 | |
---|---|
项目 | 说明 |
常量(Constant) | 给定属性的静态和不变数量。矢量值,包含X、Y和Z的数值。 |
锁定轴(Locked Axes) | 它将3个轴中的一个轴锁定到另一个轴,从而简化Distribution。请参阅下面的“锁定轴(Locked Axes)标记”表。 |
锁定轴(Locked Axes)标记 | 说明 |
---|---|
EDVLF_None | 不将任何一个轴锁定到另一个轴。 |
EDVLF_XY | 将Y轴锁定到X轴数值。 |
EDVLF_XZ | 将Z轴锁定到X轴数值。 |
EDVLF_YZ | 将Z轴锁定到Y轴数值。 |
EDVLF_XYZ | 将Y和Z轴锁定到X轴数值。 |
注意:当锁定标记处于激活状态时,值在属性窗口设置中不反映。即,当LockedAxes标记设置为EDVLF_XY时,Y值不显示X内容。仅当从Distribution(在代码中)检索数值时,才会应用锁定轴数值。
DistributionVectorUniform
此类型用于为属性提供值的范围。求值时,返回值将在所选择的范围内随机设定。

- X轴最小数值
- X轴最大数值
-
X轴随机范围
- Y轴最小数值
- Y轴最大数值
-
Y轴随机范围
- Z轴最小数值
- Z轴最大数值
- Z轴随机范围
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

DistributionVectorUniform属性 | |
---|---|
项目 | 说明 |
最小值(Min) | 随机计算的最小数值。使用“矢量均匀(Vector Uniform)”时,它将包含X、Y和Z值。 |
最大值(Max) | 随机计算的最大数值。使用“矢量均匀(Vector Uniform)”时,它将包含X、Y和Z值。 |
使用极值(Use Extremes) | 指示也应使用“最小值(Min)”和“最大值(Max)”数值,而非仅使用它们之间的数值。 |
锁定轴(Locked Axes)标记 | 说明 |
---|---|
EDVLF_None | 不将任何一个轴锁定到另一个轴。 |
EDVLF_XY | 将Y轴锁定到X轴数值。 |
EDVLF_XZ | 将Z轴锁定到X轴数值。 |
EDVLF_YZ | 将Z轴锁定到Y轴数值。 |
EDVLF_XYZ | 将Y和Z轴锁定到X轴数值。 |
镜像标记允许将最小值(Min)/最大值(Max)数值镜像给该值的每个组件。支持以下镜像标记:
镜像标记(MirrorFlags) | 说明 |
---|---|
EDVMF_Same | 也将最大值(Max)数值应用给最小值(Min)。 |
EDVMF_Different | 按照设置使用每个值。 |
EDVMF_Mirror | 最小值(Min)数值为最大值(Max)的负值(最大值(Max) * -1)。 |
紧挨在“镜像标记(Mirror Flags)”属性下面的0、1和2分别代表X、Y和Z轴。
DistributionVectorConstantCurve
此类型用于为随时间推移在图表编辑器上绘制的属性提供值。时间是绝对的(在发射器生命周期期间)还是相对的(在单个粒子的生命周期期间)取决于使用该Distribution的模块。

- X轴曲线点0
- X轴曲线点1
-
X轴插值曲线
- Y轴曲线点0
- Y轴曲线点1
-
Y轴插值曲线
- Z轴曲线点0
- Z轴曲线点1
- Z轴插值曲线
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

与FloatConstantCurve类型一样,建议通过曲线编辑器编辑此Distribution类型。
注意:当在使用ConstantCurve Distribution时将LockedAxes标记设置为 EDVLF_None 以外的值时,曲线编辑器将不显示锁定的轴,以避免混淆。例如,如果将标记设置为 EDVLF_XY,曲线编辑器将仅包含X和Z曲线。
DistributionFloatConstantCurve属性 | |
---|---|
项目 | 说明 |
点(Points) | 包含曲线上所有点的数组属性。你可以使用 ![]() |
点属性 | |
InVal* | 点在图表横轴上的位置,通常作为时间计算。 |
OutVal* | 点在图表纵轴上的位置,通常作为属性值计算。 |
到达切线(ArriveTangent)* | 规定点的传入切线的角度。有用值范围大约介于-150到150之间。 |
离开切线(LeaveTangent)* | 规定点的传出切线的角度。有用值范围大约介于-150到150之间。 |
插值模式(InterpMode) | 允许用户在各种适用于曲线的插值模式间进行选择。请参阅曲线编辑器用户指南页面,以获取更多详细信息。 |
锁定轴(Locked Axes)标记 | 说明 |
---|---|
EDVLF_None | 不将任何一个轴锁定到另一个轴。 |
EDVLF_XY | 将Y轴锁定到X轴数值。 |
EDVLF_XZ | 将Z轴锁定到X轴数值。 |
EDVLF_YZ | 将Z轴锁定到Y轴数值。 |
EDVLF_XYZ | 将Y和Z轴锁定到X轴数值。 |
DistributionVectorUniformCurve
此类型用于为随时间推移在图表编辑器上绘制的属性提供值的范围。将从最小值(Min)和最大值(Max)曲线之间随机选择每个轴的最终值。

- X轴最小值(Min)曲线
- X轴最大值(Max)曲线
-
X轴随机插值范围
- Y轴最小值(Min)曲线
- Y轴最大值(Max)曲线
-
Y轴随机插值范围
- Z轴最小值(Min)曲线
- Z轴最大值(Max)曲线
- Z轴随机插值范围
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

DistributionVectorUniformCurve属性 | |
---|---|
项目 | 说明 |
点(Points) | 包含曲线上所有点的数组属性。你可以使用 ![]() |
点属性 | |
InVal* | 点在图表横轴上的位置,通常作为时间计算。 |
OutVal* | 点在图表纵轴上的位置,通常作为属性值计算。对于浮点均匀曲线(Vector Uniform Curve),此属性将包含V1和V2数值,分别代表输出的最小值和最大值。每一个值都包含X、Y和Z轴数值。 |
到达曲线(ArriveTangent)* | 为V1和V2(最小值和最大值)的点提供传入切线的角度,每个都包含X、Y和Z数值。有用数值大约介于-150到150之间。对于浮点均匀曲线(Vector Uniform Curve),此属性将包含V1和V2数值,分别代表输出的最小值和最大值。每一个值都包含X、Y和Z轴数值。 |
离开切线(LeaveTangent)* | 规定点的传出切线的角度(X和Y(最小值和最大值))。有用值范围大约介于-150到150之间。对于浮点均匀曲线(Vector Uniform Curve),此属性将包含V1和V2数值,分别代表输出的最小值和最大值。每一个值都包含X、Y和Z轴数值。 |
插值模式(InterpMode) | 允许用户在各种适用于曲线的插值模式间进行选择。请参阅曲线编辑器用户指南页面,以获取更多详细信息。 |
使用极值(Use Extremes) | 指示也应使用“最小值(Min)”和“最大值(Max)”数值,而非仅使用它们之间的数值。 |
锁定轴(Locked Axes)标记 | 说明 |
---|---|
EDVLF_None | 不将任何一个轴锁定到另一个轴。 |
EDVLF_XY | 将Y轴锁定到X轴数值。 |
EDVLF_XZ | 将Z轴锁定到X轴数值。 |
EDVLF_YZ | 将Z轴锁定到Y轴数值。 |
EDVLF_XYZ | 将Y和Z轴锁定到X轴数值。 |
镜像标记允许将最小值(Min)/最大值(Max)数值镜像给该值的每个组件。支持以下镜像标记:
镜像标记(MirrorFlags) | 说明 |
---|---|
EDVMF_Same | 也将最大值(Max)数值应用给最小值(Min)。 |
EDVMF_Different | 按照设置使用每个值。 |
EDVMF_Mirror | 最小值(Min)数值为最大值(Max)的负值(最大值(Max) * -1)。 |
与其它曲线类型一样,建议通过曲线编辑器编辑此Distribution类型。
DistributionVectorParticleParam
此类型是上面说明的FloatParticleParam类型的等效矢量类型。它允许通过代码、蓝图或Matinee操纵数值。
选择它作为类型时,你将看到以下对话框,可使用它编辑数值:

DistributionFloatParticleParameter属性 | |
---|---|
项目 | 说明 |
参数名称(Parameter Name) | 在代码或蓝图脚本中引用参数时使用的名称。 |
最小输入(Min Input) | 可以传入(通常通过游戏代码)Distribution的最小数值。 |
最大输入(Max Input) | 可以传入(通常通过游戏代码)Distribution的最大数值。 |
最小输出(Min Output) | 可以输出到(通过从输入范围映射)级联的最小数值。 |
最大输出(Max Output) | 可以输出到(通过从输入范围映射)级联的最大数值。 |
参数模式(Param Mode) | 它控制使用输入值的方式。请参阅下面的“参数模式(Param Mode)标记”表。 |
常量(Constant) | 为系统规定不存在输入时的默认值。 |
锁定轴(Locked Axes)标记 | 说明 |
---|---|
EDVLF_None | 不将任何一个轴锁定到另一个轴。 |
EDVLF_XY | 将Y轴锁定到X轴数值。 |
EDVLF_XZ | 将Z轴锁定到X轴数值。 |
EDVLF_YZ | 将Z轴锁定到Y轴数值。 |
EDVLF_XYZ | 将Y和Z轴锁定到X轴数值。 |
参数模式(Param Mode)标记 | 说明 |
---|---|
DPM_Normal | 不对输入值产生影响。 |
DPM_Abs | 使用重新映射前输入值的绝对值。 |
DPM_Direct | 直接使用输入值(不重新映射)。 |