UUserWidget::SetAnimationCurrentTime が動作しない

お世話になっております。

UE5.4.3 から UE5.5.4 にアップデートしたところ、UUserWidget::SetAnimationCurrentTime が動作しなくなりました。

調べたところ、UUMGSequencePlayer の `TimeCursorPosition` が `UnwarpedPosition` により上書きされていることがわかりました。

UUMGSequencePlayer::SetCurrentTime 関数の実装を以下のように直すことで改善を確認できました。

<br/>

```

void UUMGSequencePlayer::SetCurrentTime(float InTime)

{

TimeCursorPosition = AnimationResolution.AsFrameTime(InTime);

/* ここから追記。PlayInternal にならい UnwarpedPosition も更新する */

const FMovieSceneSequenceHierarchy* Hierarchy = RootTemplateInstance.GetHierarchy();

if (Hierarchy && Hierarchy->GetRootTransform().FindFirstWarpDomain() == UE::MovieScene::ETimeWarpChannelDomain::PlayRate)

{

UnwarpedPosition = Hierarchy->GetRootTransform().Inverse().TryTransformTime(TimeCursorPosition).Get(TimeCursorPosition);

}

else

{

UnwarpedPosition = TimeCursorPosition;

}

}

```

<br/>

一旦こちら修正を適用してプロジェクトで使用しようと思います。

ご確認をお願いします。

再現手順
UUserWidget::PlayAnimation を行う。

※この際、 PlaybackSpeed は 0 や 0.1 などにしておくと不具合挙動がわかりやすい。

その後、 UUserWidget::SetAnimationCurrentTime で時刻指定を行う。

お世話になっております。

言っしゃる通り、5.5.4でこのバグが存在しています。

ただ、調整方法としては、

Engine/Source/Runtime/UMG/Public/Animation/UMGSequencePlayer.hの中のSetCurrentTime()これにすることが推奨になります。

void SetCurrentTime(float InTime) { TimeCursorPosition = UnwarpedPosition = AnimationResolution.AsFrameTime(InTime); }

それで解決できるかと思います。

お手数ですが、よろしくお願いします。

5.5.4の不具合情報について教えていただきありがとうございます。

また、教えていただいた方法でも正常に動作するようになることを確認できました。

ありがとうございました。