Unityのタイムラインで特定のフレームにスキップしたい
特定の再生時間に移動したい場合はPlayableDirectorのtimeプロパティに時間をつっこんであげればOK
ただこれは経過時間なので、フレーム数ではない。
タイムラインエディタ上のフレーム表示(下の画像の赤枠)に移動したいときは、タイムラインのFPSで割ったものを代入してあげる必要がある。
フレーム数はここから確認
var frame = 643; //飛びたいフレーム var directorFps = ((TimelineAsset) director.playableAsset).editorSettings.fps; director.time = frame / directorFps;
こんな感じで指定すればOK
余談
ただこの方法で移動した場合、移動後のフレームまでにMessageMarkerで呼び出そうとしているメソッドがあると、全てまとめて呼ばれてしまう。
SEをMessageMarkerで呼び出していたので、スキップするとまとめて音がなるという現象が。。
再生する処理側で修正しましたが、今後のアニメーション実装次第ではスキップ時に呼ぶかどうかっていうフラグをもたせた拡張が必要かも。
MessageMarkerはタイムライン上でメソッドを簡単に呼び出せるやつ
github.com
Signalを使えばよかったのかな?
そこはまだ検証してないです。
blogs.unity3d.com