那麼在這一期,我們來討論一下如何編寫一個協程。如果你不知道什麼是協程,或者你還沒有遇到過,那你可以直接跳過這一集。等你遇到了協程再來觀看。
在這裡,我找到一個協程,或者說通過這個遊戲的重構,通過這個 PK 類裡面還有一個協程在這個 load sense 有跳轉場景的時候,它會進行一個過渡。通過協程來等待一段時間,然後在場景之間進行一個過渡。今天就以它為例來說明一下如何編寫這個 pass,或者寫一個這個標籤,如何寫一個後置固定。需要注意的是不要寫前置定。
這個線程是比較特殊的。名字應該放在哪裡?然後,這個返回值,這裡就是我們原先寫的這個後置補丁的話,返回值通常是不返回,但是協程不一樣。對於協程,我們需要一個 ie emt。如果你寫出來之後它出現錯誤提示,那你需要注意一點,就是它需要一個命名空間。比如說,寫出來之後,需要首先定義一個,看它的錯誤提示需要 u 型這個命名空間。這點一定要注意,確保將其名稱補全。在參數的地方也要傳入一個 ie number。
當然,這個也不是必須的,取決於你是否需要使用它這個原方法。需要注意的是,它不帶兩個下劃線,是不帶下劃線的。
然後你會看到它仍然會出現錯誤提示,因為我們並沒有返回任何東西。如果我們直接返回這個參數的話,就相當於執行了它原本的方法,然後再返回這個值。這種寫法就相當於之前提到的前置操作。舉個例子,如果我們想在調用之後再輸出一些內容,就是這個流程是怎樣的。比如當遊戲開始調用這個寫好的代碼時,首先會輸出一個“一”,然後運行整個一段代碼,最後輸出一個“二”。這就是整個流程。
如果你想要修改方法,比如我不想要這個了,我自己寫全都不要了,那隻要不返回這個參數就好了,你可以返回自己需要的內容。即使你使用了 return 等待三秒這樣的寫法,它在執行時會先輸出一個“一”,然後等待三秒輸出一個“二”,這裡面的其他部分都不會執行,這就相當於進行了一個複寫。當然,一般情況下我們還是需要返回值,除非想要完全覆蓋掉。
接下來,我們在這個過程中再輸出一些內容,我們想要的效果是在執行前先輸出一個“一”,然後等三秒輸出一個“二”,然後再執行它原本的函數,最後輸出一個“三”。我們去遊戲裡看一下。
我們現在開始遊戲。首先輸出一個“一”,然後在下面輸出了一個“二”,然後進行了一個過渡,最後輸出了一個“三”。這就是一個協程的 pass。
關於協程的 pass,更多的信息可以參考這個編號為 x 的文檔,其中有更多的說明。我就不再詳細解釋了。那麼本期的教程就到這裡。