🔄
【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