NumberSequence 数据类型代表从 0 到 1 一系列数值。数字值使用 NumberSequenceKeypoint 输入型表达。这种类型在属性中使用,例如 ParticleEmitter.Size 和 Beam.Transparency 来定义时间上的数值变化。
平等
两个 NumberSequence 对象只有在其 NumberSequenceKeypoint 值相等时才相等,即使两者都会导致相似的图表。
评估
NumberSequence 类型没有内置方法获取特定时间/点的值,因为键点可以有随机封装。然而,假设你的钥匙点的封装值都是 0,你可以使用以下函数在特定时间进行评估。
local function evalNumberSequence(sequence: NumberSequence, time: number)
-- 如果时间为 0 或 1,分别返回第一个或最后值
if time == 0 then
return sequence.Keypoints[1].Value
elseif time == 1 then
return sequence.Keypoints[#sequence.Keypoints].Value
end
-- 否则,步过每个顺序的键点对
for i = 1, #sequence.Keypoints - 1 do
local currKeypoint = sequence.Keypoints[i]
local nextKeypoint = sequence.Keypoints[i + 1]
if time >= currKeypoint.Time and time < nextKeypoint.Time then
-- 计算点之间的 alpha 距离有多远
local alpha = (time - currKeypoint.Time) / (nextKeypoint.Time - currKeypoint.Time)
-- 使用 alpha 返回点之间的值
return currKeypoint.Value + (nextKeypoint.Value - currKeypoint.Value) * alpha
end
end
end
local numberSequence = NumberSequence.new{
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(0.5, 1),
NumberSequenceKeypoint.new(1, 0),
}
print(evalNumberSequence(numberSequence, 0.65)) --> 0.7
概要
构造工具
返回一个 NumberSequence ,其开始和结束值设置为提供的 n 。
返回两个关键点的 NumberSequence 值,其中 n0 为起始值, n1 为终值。
从 NumberSequence 阵列中返回一个 NumberSequenceKeypoints 。
属性
一个由 NumberSequenceKeypoint 值排序上升的阵列。
构造工具
new
返回一个 NumberSequence ,其开始和结束值设置为提供的 n 。
local numberSequence = NumberSequence.new(n)-- 等价于local numberSequence = NumberSequence.new{NumberSequenceKeypoint.new(0, n),NumberSequenceKeypoint.new(1, n)}
参数
new
返回两个关键点的 NumberSequence 值,其中 n0 为起始值, n1 为终值。
local numberSequence = NumberSequence.new(n0, n1)-- 等价于local numberSequence = NumberSequence.new{NumberSequenceKeypoint.new(0, n0),NumberSequenceKeypoint.new(1, n1)}
new
从 NumberSequence 阵列中返回一个 NumberSequenceKeypoints 。钥匙点必须按非下降时间值顺序提供。至少需要提供两个关键点,它们必须有时间值 0 (第一个) 和 1 (最后一个)。
local numberSequence = NumberSequence.new{NumberSequenceKeypoint.new(0, 0),NumberSequenceKeypoint.new(0.5, 0.5, 0.25),NumberSequenceKeypoint.new(1, 1)}