您的位置:首页 > 其它

FSM有限状态机(一)

2017-10-12 17:01 363 查看
FSM有限状态机(一)<12/10/10217>
为什么要学习FSM有限状态机:
1.状态机能够分离逻辑代码;

2.提高代码的重用性和可维护性.

什么是FSM有限状态机:
1有限状态机(FSM)简称状态机;

2.FSM的状态个数是有限的.



Switch状态机一般适用于状态比较少的状态机:(Switch放在Update中每帧检测对象状态)

1.使用枚举Enum来定义FSM中的状态;

2.Switch用来判断当前状态来决定逻辑代码的执行.

Switch状态机简单演示:

<1>一个脚本挂Cube身上:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FSMlearning : MonoBehaviour
{
public enum LightState
{
OpenLight,
CloseLight
}
public Light _light;
public LightState currentState = new LightState();

void Start()
{
currentState = LightState.CloseLight;
}

void Update()
{
switch (currentState)
{
case LightState.CloseLight:
print("CloseReady2Open");
OnOpenState();
break;
case LightState.OpenLight:
print("OpenReady2Close");
OnCloseState();
break;
default:
break;
}
}

private void OnOpenState()
{
if (Input.GetMouseButtonDown(0))//因为每帧都会执行switch检测,所以打开或关闭必有一个方法会被每帧都被执行
{
_light.intensity = 1;
currentState = LightState.OpenLight;
}
}

private void OnCloseState()
{
if (Input.GetMouseButtonDown(1))//因为每帧都会执行switch检测,所以打开或关闭必有一个方法会被每帧都被执行
{
_light.intensity = 0;
currentState
4000
= LightState.CloseLight;
}
}
}
<2>然后实际效果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: