Unity3D :PlayableGraph
推薦:將NSDT場(chǎng)景編輯器加入你的3D工具鏈
3D工具集:NSDT簡(jiǎn)石數(shù)字孿生PlayableGraph
PlayableGraph 定義一組綁定到 GameObject 或組件的可播放輸出項(xiàng)。PlayableGraph 還定義一組可播放項(xiàng)及其依賴關(guān)系。圖 1 提供了一個(gè)示例。
PlayableGraph 負(fù)責(zé)管理可播放項(xiàng)及其輸出的生命周期。使用 PlayableGraph 可創(chuàng)建、連接和銷毀可播放項(xiàng)。
圖 1:PlayableGraph 示例在圖 1 中,顯示 PlayableGraph 時(shí),為了緊湊,從圖形節(jié)點(diǎn)的名稱中移除了“Playable”一詞。例如,名為“AnimationClipPlayable”的節(jié)點(diǎn)顯示為“AnimationClip”。
可播放項(xiàng)是一種繼承 IPlayable 接口的 C# 結(jié)構(gòu)體。它用于定義其與其他可播放項(xiàng)的關(guān)系。同樣,可播放項(xiàng)輸出是繼承 IPlayableOutput 接口的 C# 結(jié)構(gòu)體,用于定義 PlayableGraph 的輸出。
圖 2 顯示了最常見的核心可播放項(xiàng)類型。圖 3 顯示了核心可播放項(xiàng)輸出類型。
圖 2:核心可播放項(xiàng)類型圖 3:核心可播放項(xiàng)輸出類型The playable core types and playable output types are implemented as C# structs to avoid allocating memory for garbage collection.
“Playable”是所有可播放項(xiàng)的基本類型,這意味著您總是可以隱式將一個(gè)可播放項(xiàng)轉(zhuǎn)換為 Playable。相反的情況并不成立,如果將“Playable”顯式轉(zhuǎn)換為不兼容類型,則會(huì)拋出異常。它還定義能在可播放項(xiàng)上執(zhí)行的所有基本方法。要訪問特定于類型的方法,您需要將可播放項(xiàng)轉(zhuǎn)換為相應(yīng)類型。
PlayableOutput 也是如此,它是所有可播放項(xiàng)輸出的基本類型,定義了基本方法。
注意:Playable 和 PlayableOutput 未暴露大量方法。但“PlayableExtensions”和“PlayableOutputExtensions”靜態(tài)類提供了擴(kuò)展方法。
所有非抽象可播放項(xiàng)都有一個(gè)公有靜態(tài)方法 Create(),該方法創(chuàng)建相應(yīng)類型的可播放項(xiàng)?!癈reate()”方法始終將 PlayableGraph 作為其第一個(gè)參數(shù),該圖擁有新創(chuàng)建的可播放項(xiàng)。某些類型的可播放項(xiàng)可能需要其他參數(shù)。非抽象可播放項(xiàng)輸出還會(huì)暴露 Create() 方法。
有效的可播放項(xiàng)輸出應(yīng)鏈接到可播放項(xiàng)。如果可播放項(xiàng)輸出未鏈接到可播放項(xiàng),則可播放項(xiàng)輸出不執(zhí)行任何操作。要將可播放項(xiàng)輸出鏈接到可播放項(xiàng),請(qǐng)使用 PlayableOutput.SetSourcePlayable() 方法。對(duì)于該特定可播放項(xiàng)輸出,鏈接的可播放項(xiàng)充當(dāng)可播放項(xiàng)樹的根。
要將兩個(gè)可播放項(xiàng)連接在一起,請(qǐng)使用 PlayableGraph.Connect() 方法。請(qǐng)注意,某些可播放項(xiàng)不能有輸入。
使用 PlayableGraph.Create() 靜態(tài)方法來創(chuàng)建 PlayableGraph。
使用 PlayableGraph.Play() 方法來播放 PlayableGraph。
使用 PlayableGraph.Stop() 方法來停止播放 PlayableGraph。
使用 PlayableGraph.Evaluate() 方法來評(píng)估 PlayableGraph 在特定時(shí)間的狀態(tài)。
使用 PlayableGraph.Destroy() 方法來手動(dòng)銷毀 PlayableGraph。此方法會(huì)自動(dòng)銷毀 PlayableGraph 創(chuàng)建的所有可播放項(xiàng)和可播放項(xiàng)輸出。必須手動(dòng)調(diào)用此銷毀方法來銷毀 PlayableGraph,否則 Unity 會(huì)發(fā)出一條錯(cuò)誤消息。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。