タイムラインでカスタムトラックを作成するにはどうすればよいですか?



How Create Custom Track Timeline



こんにちは、私はUnityのかわいい新しい学習をフォローしています。私の名前はXiaoxinです。これは今週の私の研究概要レポートです。

タイムラインをしばらく使用した後、私はDazhiに尋ねました: 'タイムラインにはトラックが非常に少ないのですか?これらのトラックのいくつかはまったく満たすことができないことがわかりました。使用する 以前に学んだ再生可能なトラック また面倒ですが、他に方法はありますか? '



Dazhi:「どのような問題に遭遇しましたか?」

Xiaoxin: '私たちが以前に学んだもの 再生可能なトラック 問題の1つは、カスタムクリップを追加するたびに、それにライトコンポーネントを割り当てる必要があるということです。クリップが多いと大変面倒です。 '



Dazhi: 'それは大丈夫です、それは大きな問題ではありません、あなたは複数のオプションを選択することによって一度にそれをすべて得ることができます。しかし、もっと必要になるかもしれないのはカスタムトラックです。 カスタムトラックを使用することには、いくつかの利点があります。
1.あなたの脳を使ってコードで無限の可能性を実現することができます
2.トラックのバインドの問題を解決できます(下図のバインドされたオブジェクト)。バインドする必要があるのは1回だけで、トラック上のすべてのクリップにアクセスできます。アニメーショントラックやアクティベーショントラックなど。
3. Playable Trackで多くの種類のクリップが混在していると、非常に混乱し、直感的ではなくなります。カスタムトラックは、さまざまな目的でトラックを直感的に区別できます。

画像

それでは、前に学ぶ方法を見てみましょう 再生可能なトラック カスタムライトクリップをカスタムトラックに変更してから、ライトコンポーネントをバインドします。



以下は前のものに基づいていることに注意してください 再生可能なトラック このセクションで勉強したことがない場合は、最初に勉強することをお勧めします 再生可能なトラック

カスタムトラック

まず、TrackAssetを継承するカスタムトラックスクリプトを作成する必要があります。

using UnityEngine using UnityEngine.Timeline [TrackClipType(typeof(LightControlAsset))] [TrackBindingType(typeof(Light))] public class LightControlTrack : TrackAsset {}

このコードは2つの属性を使用します。

  • TrackClipTypeトラック受信用のPlayableAssetタイプを指定します
  • TrackBindingTypeトラックがバインドする必要のあるオブジェクトタイプを指定します。

次に、以前のLightControlAssetおよびLightControlBehaviourであるPlayableAssetおよびPlayableBehaviourを変更する必要があります。

LightControlBehaviourのコードは次のとおりです。

using UnityEngine using UnityEngine.Playables public class LightControlBehaviour : PlayableBehaviour { //public Light light = null no longer need it public Color color = Color.white public float intensity = 1f public override void ProcessFrame(Playable playable, FrameData info, object playerData) { Light light = playerData as Light // There are changes in this place if (light != null) { light.color = color light.intensity = intensity } } }

PlayableBehaviourでは、Lightメンバー変数は、メソッドのplayerDataから取得して対応する型に変換できるため、不要になりました。

using UnityEngine using UnityEngine.Playables public class LightControlAsset : PlayableAsset { //public ExposedReference light No need for it public Color color = Color.white public float intensity = 1f public override Playable CreatePlayable (PlayableGraph graph, GameObject owner) { var playable = ScriptPlayable.Create(graph) var lightControlBehaviour = playable.GetBehaviour() //lightControlBehaviour.light = light.Resolve(graph.GetResolver()) lightControlBehaviour.color = color lightControlBehaviour.intensity = intensity return playable } }

PlayableAssetでExposedReferenceを保持する必要はありません。トラックは、このLightオブジェクトを直接提供します。

タイムラインに追加

これで、ライトコントロールトラックをタイムラインに直接追加できます。

トラックを追加した後、バインドされたオブジェクトを設定する必要があります。このようにして、各クリップはバインドされたオブジェクトを取得できます。

内蔵トラックのように使えます!

カスタムトラックは、自由に再生できるようにサポートし、タイムラインを非線形の実行中のインタラクティブなシーケンスアニメーションにすることもできますが、それは再びあなたの興味をそそりますか?それなら私と一緒にXiaoxinに来てください。

【拡張学習】 Timeline&Cinemachineに関心のある子供靴:その他のチュートリアル Hongliuスクール パブリックアカウントの返信timelineグラフィックマニュアルとビデオチュートリアルを無料で入手できます。


さて、今日ここでXiaoxinとチャットしましょう。明確に説明されていないコメントは大歓迎です、いいえ お気に入り収集する 返信できない場合があります(&not、&not)(¬_¬)

テクニカルパスファインダーのDazhiです。またお会いしましょう!

行かないで! お気に入り収集する ああ!

さて、あなたは今行くことができます。