TimelineのExperimental Buildが公開されています。
せっかくなので字幕に使ってみました。
Timelineのスクリプト制御
Timelineエディタの機能の一つにタイムラインエディタからスクリプト制御を行うというモノがあります。
UnityエディタのTimeline機能は、大きく分けて3つのスクリプト制御が出来るみたいです。
Track Assetは、Timelineのトラックに登録するPlayable Assetやバインドするオブジェクトを制御する物っぽいです。*1
PlayableAssetはトラック上に配置し、設定した項目をScript Playableに渡す物です。
ScriptPlayableは再生中に呼び出される処理本体です。
とりあえず今回はPlayable AssetとScript Playableを使ってみます。
Timelineを用意
まずはタイムラインの処理を登録するPlayableAssetを用意します。ココにタイムラインベースの処理を登録する流れです。
作成したら、Playalbe Directorコンポーネントを適当なオブジェクトに追加して、先程作成したPlayableAssetを登録します。
スクリプトの用意
次に、スクリプトを用意します。
Timeline Clip C# Scriptを選択して、名前をSubtitlePlayableとかに設定しておきます。
後は、下のコードを作ったスクリプトにコピペ。
ウィンドウを開く
次にTimelineのウィンドウを開きます。
その後、Playalbe Directorを選択し、Previewが見えるタイミングでウィンドウをロックします。
こうしないと、ウィンドウを操作するたびにTimelineウィンドウの表示がおかしくなり、非常にストレスフルです。特にスクリプト制御を行う際は、オブジェクトをあっちこっち触るので、必ずロックした方が良い印象です。
もしオブジェクトの登録が出来ない場合、TimelineEditorがSequence Assetモードになっていると思われます
ただ、ロックするとウィンドウが消せなくなる不具合があります。その場合は、一旦Playalbe Directorを選択してロックを解除してから、ウィンドウを閉じます。
タイムラインの設定
タイムラインに字幕を設定します。
まずPlayable Trackでトラックを追加、
追加したトラック内で右クリック→Add Clip→SubtitlePlayableAssetを選択
作られた項目を選択すると、Inspectorに更新したいTextコンポーネントと変更するメッセージを設定する項目が表示されるので、設定。
これでタイムラインに合わせてテキストが更新出来ます。
ExposedReference
今回のTimelineで面倒くさい面白いのが、ExposedReferenceという機能です。
これは実行時にオブジェクトの依存関係を解決する機能みたいです。
PlayableAssetはあくまでアセットなので、シーンに対する参照を持ちません。そのため、シーンに既に存在するPlayableDirectorにオブジェクトへの参照を登録しておき、PlayableAsset読込時に解決するという物です。
なので、例えばPlayableAssetをResourcesやAssetBundleに格納しておき、特定のイベント発行時(ドアを開いたり宝箱を開くカットシーン)にロードする…といった事も出来そうです。
ちなみに現在(Unity 5.6 b6 Timeline用Experimental Build)のメモリ管理周りがかなり雑になっているらしく、Timeline関連のアセットのアンロードや読込等の処理や、アセットの開放漏れでエディタが簡単に強制終了します。
関連
*1:マニュアルにも使い方は書いておらず、コレを有効活用してるサンプルも無いので用途不明です。ただPlayableAssetに全部任せると色々と駄目なので、Track先生には活躍して欲しい所。