🔄

【Unity】スクリプトからTimelineを変更した際のビューの更新方法【Editor拡張】

に公開

はじめに

EditorWindowクラスにはRepaint()という、いかにもそれっぽい関数が用意されています。
しかし、ことTimelineビューに関してはこれでは更新できないので、正しい方法をまとめました。
一本の記事にする程でもない些細なTIPSですが、私自身が頻繁に参照しそうだったので記録に残します。

検証環境

  • Unity6000.0.36f1
  • Timeline 1.8.7

正解

if (HasOpenInstances<TimelineEditorWindow>())
{
    var timelineWindow = GetWindow<TimelineEditorWindow>();
    if (timelineWindow != null)
    {
        timelineWindow.ClearTimeline();
        timelineWindow.SetTimeline(playableDirector);
    }
}

補足

TimelineEditorWindowの当該関数にはlockしないと使えないとコメントされていますが、Editorに表示されていればOKのようなので、HasOpenInstances()でチェックを入れています。
またSetTimeline()は引数をPlayableDirectorではなくTimelineAssetにすることも出来るようなので、お手元のEditor拡張ツールに合わせて使い分けてください。

おわりに

知らないと地味に不便な、純正Timelineの癖強エピソードでした。

Discussion