Slide 1

Slide 1 text

Roppongi.unity #2 LT 分かった気になる! Timeline Signals 青木とと@lycoris102

Slide 2

Slide 2 text

だれ? 2 @lycoris102 青木とと ねんれい:29 しごと: 株式会社キッズスター かぞく: 妻と2歳半の息子 #Unityアンバサダー #Gotanda.unity #UnityDesigner’sCafe #勉強会主催/サポート #ボードゲーム #音ゲー

Slide 3

Slide 3 text

3 あーSignalsね、Timelineの、分かる分かるー 名前だけでも覚えていってね! ……くらいになるのが今日のゴール

Slide 4

Slide 4 text

4 Timeline そもそも ってなんだっけ?

Slide 5

Slide 5 text

5 複数のアニメーション/音声などを 時系列に沿って再生するための 機能およびエディタのこと Unity2017.1.0で正式にリリースされました Timelineのおさらい

Slide 6

Slide 6 text

6 Timelineアセットを作成して PlayableDirectorコンポーネントにアタッチ Timelineのおさらい Timelineの再生を再生したり止めたり、中身を置き換えたりする君

Slide 7

Slide 7 text

7 ControlTrackはPrefabの生成制御やParcticleSystem/他のPlayableDirectorの再生制御など 「誰が」「どうする」を表す Track Animation Track アニメーションを行う Audio Track 音声を再生する Activation Track Activeを切り替え Control Track いろいろできるぞ Timelineのおさらい

Slide 8

Slide 8 text

8 「何を」「いつ」「どのくらい」を指定する Clip AnimationTrackであれば再生するAnimationClipを指定する
 AudioTrackであれば再生するAudioClipを指定する Timelineのおさらい

Slide 9

Slide 9 text

Timelineのおさらい 9 Unity2019からは PackageManagerにて 管理されるようになりました Unity2017〜2018では組み込みで提供されています

Slide 10

Slide 10 text

10 Signals Unity2019で Timelineに追加される新機能 Timeline上で 任意のメソッドを呼び出すための仕組み

Slide 11

Slide 11 text

11 お題 ジャンプするタイミングで
 TimeScaleを変更してスローにする Signalsの使い方

Slide 12

Slide 12 text

12 Signalsの使い方 TimeScale を変更する関数を publicで定義した classを用意する (TimeScaleController)

Slide 13

Slide 13 text

13 Signalsの使い方 Signal アセットを作成する

Slide 14

Slide 14 text

14 Signalsの使い方 Signalと処理は1:1の関係を持つので、異なる処理を呼び出す場合は複数Signalを作成する 2つのアセットを作成 TimeScaleSlowSignal TimeScaleResetSignal

Slide 15

Slide 15 text

15 Signalsの使い方 SignalReceiver をアタッチした GameObjectを用意 先ほど作成した TimeScaleController もアタッチしておく (同一GameObjectでなくてもOK)

Slide 16

Slide 16 text

16 Signalsの使い方 Signalと処理を 紐づける

Slide 17

Slide 17 text

17 Signalsの使い方 Signal Track Signalを通知する を追加しつつ SignalReceiverを持つ GameObjectを指定する Timelineに

Slide 18

Slide 18 text

18 Signalsの使い方 Signalを配置する

Slide 19

Slide 19 text

19 完成! Signalsの使い方

Slide 20

Slide 20 text

20 今回はSignal 2つで済んだけど TimeScaleの値のレパートリーが増やす時に 逐次Signalを増やしたくない…… TimeScaleだとそんな困らないかもだけど、テキスト差し替えたいケース等で増えがち 早送り? 別のスロー?

Slide 21

Slide 21 text

21 Marker/MarkerReceiver 値も合わせて通知できるようにした を使用する Slow Reset Signal Timescale Marker 0.1f 1f 0.1f 1f SignalReceiver Change() Change() SignalReceiver側で Signal毎に挙動/引数を設定する MarkerReceiver OnNotify() Markerは通知毎に値を設定できる

Slide 22

Slide 22 text

22 TimeScaleMarker Markerを継承 INotificationを実装

Slide 23

Slide 23 text

23 TimeScaleMarkerをTimelineの Markerエリアに配置して TimeScaleの値を設定する

Slide 24

Slide 24 text

24 TimeScaleMarkerReceiver 通知が来た時の挙動を定義 INotification が引数として渡ってくるので TimeScaleMarkerとしてキャストする

Slide 25

Slide 25 text

25 https://forum.unity.com/threads/new-in-2019-1-marker-customization.594712/ (A)もしMarkerが任意のTrack上にあるならば Trackの対象として指定したGameObjectに (B)もしMarkerがTimelineのMarkerエリアにあるならば PlayableDirectorをアタッチしたGameObjectに TimeScaleMarkerReceiverをアタッチ

Slide 26

Slide 26 text

26 (B)もしMarkerがTimelineのMarkerエリアにあるならば PlayableDirectorをアタッチしたGameObjectに TimeScaleMarkerReceiverをアタッチ

Slide 27

Slide 27 text

27 完成! Signalsの使い方

Slide 28

Slide 28 text

28 Signals どういう時に 使っていく?

Slide 29

Slide 29 text

29 DOTweenやiTweenで作った演出を シーケンシャルに管理したり カットシーンにおける 字幕や吹き出しテキストの切り替えを行ったり タワーディフェンスやシューティングなど
 敵の出現タイミング制御に使ったり 操作のタイミングで一時停止させて チュートリアルみたいな使い方してみたり

Slide 30

Slide 30 text

30 あなたは何に使いますか?

Slide 31

Slide 31 text

この作品はユニティちゃんライセンス条項の元に
 提供されています © UTJ/UCL

Slide 32

Slide 32 text

分かった気になる! Timeline Signals 青木とと@lycoris102