這裡狀態機有兩個部分組成,乙個是管理各種狀態的狀態機,乙個是各種狀態本身。
狀態機對外有兩個介面,乙個是新增狀態,乙個是切換狀態。我們給乙個物件用狀態機管理,首先就給它的狀態機新增各種狀態,然後啟動狀態機就ok了,裡面不同的狀態都會在各種時候自己切換到別的狀態。
狀態本身主要有四個功能,首先儲存自己收哪個狀態機控制的引用,然後進入狀態(用方法做)、退出狀態(用方法做)、執行狀態(用攜程做)這三個過程對應的函式。執行狀態裡面會對不同情況作出處理,轉換到其他的狀態。
狀態機是一種十分優秀的設計,適用範圍十分廣泛。能使思維變得十分清晰,**結構也很規範簡單。
我一開始學狀態機,感覺這個玩意兒使用範圍很小。也就適用於處理一下怪物的ai。
但是今天的學習讓我開啟了新世界的大門,狀態機使用範圍是十分廣泛的。
它可以處理玩家操控的人物的狀態,它可以處理ui之間的管理。對於複雜的邏輯,像戰鬥系統,我也可以用狀態機來處理。
比如我有這樣的乙個戰鬥流程。首先,玩家和怪物都準備好。然後每隔一秒,玩家和怪物輪流攻擊。直到一方的血量為0。如果是怪物血量為0,那麼人物會獲得獎勵,然後重新整理怪物,繼續戰鬥。如果是玩家血量為0,那麼玩家就會進入5秒虛弱狀態,虛弱狀態結束後,玩家才會恢復血量,然後重新整理怪物,繼續開始戰鬥。
對於以上這個戰鬥流程,我們可以抽象成幾個狀態,每種狀態中都有自己的邏輯來轉移到其他的狀態。一旦我將狀態機開啟,那麼我人物就會按照這麼乙個流程戰鬥下去。當我有新的需求的時候,我只需要在不同的狀態中修改**。或者我新加入一些別的狀態就好。
就這樣,狀態機就是如此好用。
Unity 遊戲黑暗之光筆記第二章 建立角色場景
1.開始角色建立場景,匯入模型和ui資源 2.建立ui 具體參考上一章的放出的ngui的 3.設計idle狀態的兩個角色prefabs 4.控制所有的角色的建立和顯示 public gameobject characterprefabs 獲得角色模型 public uiinput nameinput...
Unity有限狀態機實現
有限狀態機主要是用於狀態之間的切換,狀態之間的切換也可以通過switch case或者if else實現。由於使用二者實現主要是對用使用者擴充套件不是很方便,所以就有了有限狀態機的概念。有限狀態機主要是用於不同的狀態頻繁的切換。那在unity中我們如何定義有限狀態機?其實有限狀態機主要包括三部分,切...
Unity中狀態機的使用
在遊戲中,人物的狀態是不斷變化的,所以寫個fsm來管理狀態是必要的。乙個有限狀態機是乙個裝置,或者是乙個裝置模型,具有有限數量的狀態,它可以在任何給定的時間根據輸入進行操作,使得乙個狀態變換到另乙個狀態,或者是使乙個輸入或者一種行為的發生。乙個有限狀態機在任何瞬間只能處在一種狀態。我們這裡設定了幾個...