zoukankan      html  css  js  c++  java
  • Unity3D之FSM有限状态机

    1状态基类FSMstate的创建

    1.1我们首先创建出来俩个全局枚举,用来保存当前状态的ID和转换的条件transition。

     

    1.2 我们所以的状态类给抽象出来一个基类出来,在创建一个字典来保存转换条件所对应的状态ID,定义一个字段来保存当前的状态的ID。这个ID是当前状态类的标识。

      

    1.3 定义俩个方法,用来“添加转换条件”和“删除转换条件”。

     

     1.4 根据转换条件获得状态的ID

     

    1.5 提供本状态的四个逻辑方法

     

    2 状态管理类FSMSystem的创建。用来管理所有的状态。

    2.1 定义字典来保存状态ID对应的状态和当前处于的状态和状态ID

     

    2.2增加俩个“添加状态”和“删除状态”的功能。

     2.3 添加执行状态切换的方法,用来改变当前所处的状态。

     2.4 添加对当前状态调用的行为和切换到下个状态的方法。

       这样我们的FSM差不多就完成了,但是这样比如敌人有俩个状态,分别是“巡逻”状态和一个”追逐“主角的状态。假如敌人当前处于“巡逻”状态,当主角靠近敌人的时候,怎么去切换到“追逐”

    主角的状态呢?通过前面我们知道,状态的切换是通过FSMSystem去管理的,所以我们在FSMState这个基类里面保有对FSMSystem的引用,这样每个状态的切换,就很容易去实现了。

     

    3 下面我们以敌人巡逻,追逐主角的例子来应用我们的状态机。

    3.1 增加一个PartalState类,用来敌人的巡逻。

    3.2 在新建一个”追逐“主角的类

     3.3 创建一个控制敌人的脚本

    这样我们的敌人的建议的状态机就完成了。

  • 相关阅读:
    开源.NET FTP组件edtFTPnet 用法
    C#开发的较好的FTP类
    C# 配置文件读取与修改
    对于List的All,Any,Where,FirstOrDefault,Average,Sum,Distinct,Union,AddRange,RemoveRange,InsertRange,GetRange操作
    一次性打印多个C1FlexGrid
    Word自动生成目录页码靠右对齐
    Windows Workflow学习文档
    Windows Workflow开发演练
    Boo who
    Missing letters
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/7161099.html
Copyright © 2011-2022 走看看