Unity學習記錄/ #2 Timeline
//
????本專欄為本人對Timeline的學習記錄,歡迎大家分享學習經(jīng)驗和指出本文的錯誤之處。
//
????剛玩完量子夢工作室的《超凡雙生》,這個工作室一直以來開發(fā)的互動電影式游戲讓人非常印象深刻,無論是爆火的《底特律:變?nèi)恕愤€是擁有著強大推理劇情的《暴雨》都通過著大量的即時動畫來展示豐富的劇情。Unity中就有著這樣一個強大的工具,讓你能在制作游戲時過一把導演癮,這就是Timeline。
????Timeline,就是時間線工具,開發(fā)者可以通過使用Timeline在游戲場景中制作動畫、鏡頭移動、視頻變化等等。

一、添加Timeline
????在我們創(chuàng)建好一個Unity項目以后,打開Window → Package Manager 后可以發(fā)現(xiàn)編輯器已經(jīng)自動為我們安裝好了Timeline工具(這真的是一個很常用的工具)。

????既然我們的項目中已經(jīng)有了Timeline,我們就可以開始使用它了。首先讓我們打開Timeline編輯窗口,它的位置就在 Window → Sequencing → Timeline。


二、Timeline的組成
????打開后,應該可以看到這樣的一個窗口。我們現(xiàn)在沒有創(chuàng)建任何一個Timeline,所以提示我們 “選擇一個 GameObject 以開始創(chuàng)建一個Timeline”。

????在Hierarchy窗口中創(chuàng)建一個空物體,取名為Timeline,reset該空物體的Transform(這是一個好習慣),接著我們在Asset窗口中創(chuàng)建一個文件夾,取名為Timeline用來儲存我們的Timeline文件。選中我們創(chuàng)建的空物體,可以看到Timeline窗口現(xiàn)在允許我們創(chuàng)建一個Timeline,創(chuàng)建保存在我們的文件夾當中保持項目的整潔。
????下圖是現(xiàn)在的Timeline窗口,可以看到它包含著一個時間軸和左側(cè)的軌道(現(xiàn)在是空的)。

????下拉左側(cè)的添加按鈕,可以看到Unity目前可供我們添加的幾種軌道,有激活軌道用來控制某物體在時間軸上的激活狀態(tài),有動畫軌道用來控制某個動畫器在時間軸上播放動畫的順序等等,這個項目里添加了 Cinemachine 組件,因此我們發(fā)現(xiàn)也可以用影視相機軌道來控制相機,大家大可自己動手嘗試一下。

????點擊我們的空物體,可以看到我們創(chuàng)建Timeline文件后,該物體的身上也自動添加了一個Playable Director 組件,也就是導演椅(這樣解釋可能比較生動),該物體就作為一個導演一樣的存在控制我們劇本的進行。既然是導演,它的手上一定就有一個劇本(Playable 屬性中的Timeline 文件),這個劇本我們可以在Timeline窗口中進行編輯,還有劇本的更新方法(目前是隨游戲時間更新),Play On Awake 導演一激活演員們就開始按劇本演出,Wrap mode 演出結(jié)束時該做什么(現(xiàn)在是什么都不做,Hold 保持在最后一幀,直到播放中斷,Loop 循環(huán)播放),Initial Time 初始時間 激活后等待幾秒開始演出,Bindings 顯示綁定。


三、創(chuàng)建一個簡單的劇本
????讓我們來簡單動手操作一下,例如制作一個過場動畫,我們可能需要播放人物的動畫,控制物體的出現(xiàn)或消失,控制音樂,控制攝像頭。于是我們就可以先創(chuàng)建相對應的控制軌道。

????首先第一個是動畫器軌道,當我們將要控制的物體添加進來后,我們有兩種方式來設定它的動畫,第一種就是從素材里面拖拽動畫clip,我想讓這個人播放待機的動畫,就把對應的Idle動畫拖進來設定好時間段。第二種方法就是錄制,在動畫軌道的部分有個紅色的錄制按鈕,點擊按鈕之后,我們就進入了錄制模式,錄制模式下創(chuàng)建的片段是無限的,被叫做無限片段。
以下是官方描述:

????在錄制模式下,對游戲?qū)ο蟮?可設置動畫屬性的 任何修改 都會在時間軸上當前的位置設置一個關鍵幀。
????要開始創(chuàng)建動畫,請將時間線播放頭移動到第一個關鍵點的位置,然后執(zhí)行以下操作之一:
????1.在Inspector窗口中,在特性名稱上單擊鼠標右鍵,然后選擇“添加關鍵點”。這將為特性添加動畫關鍵點,而不更改其值。將在無限片段中顯示一個菱形,以顯示關鍵點的位置。
????2.在Inspector窗口中,更改GameObject的可設置動畫屬性的值。這將為屬性添加一個動畫關鍵點及其更改的值。一顆鉆石圖標出現(xiàn)在時間軸中。
? ? 3.在場景視圖中,移動、旋轉(zhuǎn)或縮放游戲?qū)ο?。這會自動為更改的特性添加一個鍵。一顆鉆石圖標出現(xiàn)在時間軸中。


????在錄制結(jié)束以后,若想對錄制的片段進行修改和拖移,需要將無限片段轉(zhuǎn)化為一個動畫片段。

????也可以在軌道上單擊鼠標右鍵,然后從關聯(lián)菜單中選擇“轉(zhuǎn)換為剪輯軌道”。

????此外,動畫軌道還提供了兩個功能,Aniamtion Override Track 和 Avatar Mask (動畫覆蓋和化身遮罩),這讓我們可以讓一個對象同時播放兩種動畫,并通過遮罩來顯示部分的覆蓋動畫。在動畫軌道上單擊鼠標右鍵,然后從關聯(lián)菜單中選擇“添加覆蓋軌道”。名為“Override 0”的動畫覆蓋軌道到選定的動畫軌道。請注意,動畫覆蓋軌跡未綁定到游戲?qū)ο?,因為覆蓋軌道與上面的軌道是同一個對象,覆蓋軌道會覆蓋掉動畫。

????讓我們點擊覆蓋軌道來使用化身遮罩,關于化身遮罩就不具體講述了,大概就是可以遮蓋身體部位的遮罩,讓只有沒被遮住的部位播放動畫。

????動畫軌道介紹了這么多,第二個是激活軌道,該軌道獲取到一個物體,我們可以在時間軸上設置該物體激活 Active 的時間段,其余的時間都是禁用的狀態(tài)。
????其次是音頻軌道,該軌道獲取到一個音源組件(Audio Source),我們可以在時間軸上設定該音源所要播放的音頻片段(Audio Clip)和混合。
????最后就是攝像機軌道,該軌道獲取到一個影視相機大腦(Cinemachine Brain),我們可以在時間軸上設定該相機所獲取到的影視相機和切換的混合模式。
????當然,Unity官方還給我們提供可自定義的軌道,我們可以通過官方的API寫腳本來自定義出屬于自己的軌道(具體教程我會將鏈接放在下面)。
????眾多不同的軌道所組成的劇本,就是我們所想要的。
????另外值得一提的是,因為我們知道劇本只有在被導演使用時才能發(fā)揮作用,所以我們可以利用觸發(fā)來激活我們所想要的劇本。

四、結(jié)語
????Timeline的簡單學習就到這里了,發(fā)揮你的想象力動手創(chuàng)建生動的劇本吧!
????參考和教程:
????1.?About Timeline | Timeline | 1.7.1 (unity.cn)(官方文檔)
????2.? ??https://www.bilibili.com/video/BV1vv411a7YS?share_source=copy_web
????(咖喱飯游戲的自定義Timeline教程,很厲害的up主?。?/p>