Timelineで変数の値を変える
Timeline
機能と連携して変数の値を変化させることができます。
使用例
変数アセットをTimeline
にドラッグ&ドロップすればTrack
ができます。
BoolActivation
bool
型の変数アセットを用いるとBoolActivation
が生成されます。
これはクリップ内で値がtrue
になり、クリップ外でfalse
になります。
Tween
float
などの変数アセットを用いるとTweenVariable
が生成されます。
これは特定の値からある値へと徐々に変化させるクリップです。
対応している型
Primitive
- float
- int
Unityのstruct型
- Vector2
- Vector2Int
- Vector3
- Vector3Int
- Quaternion
- Color
使用上の注意点
CurveType
の変更などは実行されないと反映されないようです。
実装
PlayableAsset
とPlayableBehaviour
を継承して実現しています。
例えば、Tween
の処理はこんな感じです。
public class TweenVariableBehaviour<T> : PlayableBehaviour
{
public Variable<T> Variable { get; set; }
public T StartValue { get; set; }
public T EndValue { get; set; }
public Func<T, T, float, T> Interpolate { get; set; }
public override void OnBehaviourPlay(Playable playable, FrameData info)
{
Variable.Value = Interpolate(StartValue, EndValue, 0f);
}
public override void OnBehaviourPause(Playable playable, FrameData info)
{
Variable.Value = Interpolate(StartValue, EndValue, 1f);
}
public override void ProcessFrame(Playable playable, FrameData info, object playerData)
{
var progress = (float)(playable.GetTime() / playable.GetDuration());
Variable.Value = Interpolate(StartValue, EndValue, progress);
}
}