Unity+UnrealEngine4+Blog.

UnityやUnrealEngine4とかについて学習したことを書いてます

Timeline中にスクリプトでゲームを操作するPlayableとsignal

今回はTimeline中にスクリプトで操作するPlayableとsignalについての記事です。

今まではTimelineの中で自分で書いたプログラムを実行するには、PlayableAssetとPlayableBehaviourを作成していたのですが、Unity2019からsignalという機能が追加されたのでそれについても一応使い方を書きます。しかしsignalはまだα版らしく仕様がまったくかわるかもしれないので注意です。

 

*時間が無くなったのでsignalについてはまた別で記事を書きます。

 

自分が初めてTimelineを作成したときには去年の2018年11月中旬頃で、

nabesi777.hatenablog.com

 

 

その時検索してもTimelineについてのいい記事がすくないなーわかりにくいなーって状況だったんですが(多分Unity始めたばっかりだったので理解していないだけ)10月30日に分かりやすく記事を書いてくれてる人がいました!

bardaxel.jp

 

記事が書かれて日にちがたっていなかったので、検索上位に上がってきてなかったのかぁ・・

 

でもあまりTimelineをさわっていないとExposeReferenceって何?Resolveって何?って感じだと思うので分かりやすいように書いていきます。

 

まず新規のTimelineを作成してPlayableTrackをAddします。

(初期設定などは上に最初に張った自分のクソ記事に書いてます!)

 

f:id:nabesi777:20190525162503p:plain

 

練習プロジェクトにこんなオブジェクトが残ってたので、この玉を何かしてみようと思います。

f:id:nabesi777:20190525162526p:plain

 

 

PlayableAssetとBehaviourを作成!

f:id:nabesi777:20190525162722p:plain

 

f:id:nabesi777:20190525162848p:plain

 

Timeline中にスクリプトで何かを操作する場合はこの2つのスクリプトが必要になります。

 

ではまずこの2つのざっくりとした役割ですが、

Behaviourに何がしたいかのプログラムを書き、

AssetでBehaviourのインスタンスを生成してタイムライン上で実行します!(たぶん)

また、GameObjectoや変数の値をInspectorから入れたい場合はAssetのInspectorへ格納してあげます。

 

なのでタイムラインに登録するスクリプトは2つ作成したスクリプトのうち、Assetの方をドラッグ&ドロップで登録します。

f:id:nabesi777:20190525163446p:plain

 

それではBehaviourスクリプトへ挙動の方を先に書いていきます。

タイムラインの針(時間)がクリップに差し掛かると、Sphereがx方向へ1移動して、その後スケールを変えるというものです。

 

関数自体は何もしてない状態で、わかりやすいようにメソッドにコメントを付けました。いつも作成するたびにどこに書くんだっけ?となります。笑

 

 

書き方や変数の宣言自体は通常の書き方と同じですね! 

StartやUpdateのメソッドがない代わりに、PlayableBehaviour専用のメソッドあるので、どこに書くかだけ気にすれば大丈夫です。

 

 次に上で書いたPlayableBehaviourのインスタンスを生成するAssetの方を書いていきます。GameObjectをInspectorから渡してあげる場合は、そのオブジェクトがProject内にあるかシーン内にあるかで書き方が違うようなのでそこの違いがわかるように下のスクリプトを作成してみました。

 

 特にシーン内にあるオブジェクトを入れる場合は特殊な書き方をしないといけません。

 

 

 最後にAssetのInspectorへGameObjectを入れて完成です。

Timelineに登録したAssetのクリップをクリックして、

f:id:nabesi777:20190525175256p:plain

 

 そのInspectorを見ると、オブジェクトを入れるところが出てくるのでそこに格納します。

f:id:nabesi777:20190525175345p:plain

 

 Unityを再生すると下のように機能しました。

f:id:nabesi777:20190525175651g:plain

 

 追加:タイムラインをもっと知る参考記事

framesynthesis.jp