Unity有限狀態機實現

2021-06-28 18:02:52 字數 1383 閱讀 9508

有限狀態機主要是用於狀態之間的切換,狀態之間的切換也可以通過switch case或者if else實現。由於使用二者實現主要是對用使用者擴充套件不是很方便,所以就有了有限狀態機的概念。 有限狀態機主要是用於不同的狀態頻繁的切換。那在unity中我們如何定義有限狀態機?其實有限狀態機主要包括三部分,切換狀態,進入狀態,退出狀態。接下來我們就利用unity實現有限狀態機並給大家展示如何應用。

首先我們定義fsmstate.cs指令碼,我們通過委託對函式狀態進行切換.**如下:

using system;

using system.collections.generic;

namespace fsm

//獲取狀態名字

public int getstatename()

//加入狀態

public void addtransition(int transition, int outputstate)

以上的類定義的是狀態。下面我們定義對外介面,有限狀態機fstatemachine.cs指令碼

using system;

using system.collections;

using system.collections.generic;

using system.threading;

namespace fsm

//增加所有狀態

public void addallstates(type statesenumtype)

}finally}}

//該函式是表示從from到to的轉換

public void addstatetransition(object from, object to, object tr) }

}以上定義的是有限狀態機類,那接下來我給大家展示如何實現。

我們可以先初始化狀態,那如何初始化,看下面的函式:

private void initstates()

首先例項化乙個有限狀態機物件fsm,然後我們做了乙個列舉值tcpsocketlayer,然後將其加入狀態轉換函式addallstates,比如addstatetransition(tcpsocketlayer.states.disconnected, tcpsocketlayer.states.connecting, tcpsocketlayer.transitions.startconnect);

表示是從disconnected到connecting之間的轉換。

函式的末尾是設定當前狀態為disconnected。

如果我們關閉連線,我們可以使用disconnect狀態,如下函式所示:

總結一下:剛開始我們要把所有的狀態之間的切換加入到表裡,後面我們就可以隨意的使用狀態了。以上主要是利用網路通訊舉的事例。

本文出自 「海遊移動」 部落格,請務必保留此出處

有限狀態機

有限狀態機 finite state machine,fsm 又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。狀態儲存關於過去的資訊,就是說 它反映從系統開始到現在時刻的輸入變化。轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。動作是在給...

有限狀態機

以前,只碰到過 陣列中所有數字只出現2次,只有乙個出現1次,找這個數的問題 每次迴圈異或陣列中元素,最後的結果就是single one。這次換作出現3次就懵逼了,主要原因,沒有使用過有限狀態機,應該說是連概念都沒有,所以這次一定要好好記錄一下 關於這道題的解釋discussion中woshidais...

有限狀態機

需要掌握的名詞 數字系統有兩大類有限狀態機 finite state machine,fsm moore狀態機和mealy狀態機。狀態機名 次態輸出 moore摩爾 f 現狀,輸入 g 現狀 mealy公尺粒 f 現狀,輸入 g 現狀,輸入 mealy型狀態機 下一狀態不但與當前狀態有關,還與當前輸...