Unity-子狀態(tài)機(jī)
角色通常具有包含若干階段的復(fù)雜動(dòng)作。合理的做法是識(shí)別單獨(dú)階段并將單獨(dú)狀態(tài)用于每個(gè)階段,而不是用單個(gè)狀態(tài)來(lái)處理整個(gè)動(dòng)作。例如,角色可能會(huì)有一個(gè)名為“Trickshot”(花式射擊)的動(dòng)作;在此動(dòng)作中,角色會(huì)蹲下來(lái)穩(wěn)定瞄準(zhǔn),射擊,然后再站起來(lái)。

雖然這對(duì)于控制目的很有用,但缺點(diǎn)是隨著添加更多的此類復(fù)雜動(dòng)作,狀態(tài)機(jī)將變得龐大而笨拙。在編輯器中用空白空間在視覺(jué)上對(duì)狀態(tài)組進(jìn)行分隔,可略微化簡(jiǎn)一下。但是,Mecanim 比這更進(jìn)一步,允許您將一組狀態(tài)折疊為狀態(tài)機(jī)圖中的單個(gè)指定項(xiàng)。這些折疊的狀態(tài)組稱為_(kāi)_子狀態(tài)機(jī)__。
若要?jiǎng)?chuàng)建子狀態(tài)機(jī),可右鍵單擊?Animator Controller?窗口中的空白空間,并從上下文菜單中選擇?Create Sub-State Machine。子狀態(tài)機(jī)在編輯器中用細(xì)長(zhǎng)六邊形表示以區(qū)別于正常狀態(tài)。

雙擊六邊形時(shí)將清理編輯器,讓您編輯子狀態(tài)機(jī),好像它本身就是一個(gè)完全獨(dú)立的狀態(tài)機(jī)。窗口頂欄會(huì)顯示“示蹤導(dǎo)航路徑”以指示當(dāng)前正在編輯的子狀態(tài)機(jī)(注意,可在其他子狀態(tài)機(jī)內(nèi)創(chuàng)建子狀態(tài)機(jī),以此類推)。單擊跟蹤路徑中的某項(xiàng)將使編輯器聚焦于該特定子狀態(tài)機(jī)。

外部過(guò)渡

如上所述,子狀態(tài)機(jī)只是一種在編輯器中直觀地折疊一組狀態(tài)的方式,因此在過(guò)渡到子狀態(tài)機(jī)時(shí),必須選擇要連接到子狀態(tài)機(jī)的哪個(gè)狀態(tài)。
您將注意到子狀態(tài)機(jī)中有一個(gè)名稱以?Up?開(kāi)頭的額外狀態(tài)。

Up?狀態(tài)表示“外部世界”,這是在視圖中包含子狀態(tài)機(jī)的狀態(tài)機(jī)。如果添加從子狀態(tài)機(jī)中的狀態(tài)到?Up?狀態(tài)的過(guò)渡,系統(tǒng)將提示您選擇要連接到閉包狀態(tài)機(jī)的哪個(gè)狀態(tài)。
