当前位置: 首页 > news >正文

广州网站建设易企装修设计软件哪个好用

广州网站建设易企,装修设计软件哪个好用,嘉祥县建设局网站,最新免费网站收录提交入口FSM有限状态机FSM创建控制有限状态机的脚本设置FSM状态机下的各个状态添加测试类FSM的优点FSM 虽然Unity已经有了动画状态机#xff0c;但是为了代码的开放封闭原则#xff0c;这时FSM有限状态机的作用就凸显了出来。 创建控制有限状态机的脚本 先创建一个脚本用来控制有限… FSM有限状态机FSM创建控制有限状态机的脚本设置FSM状态机下的各个状态添加测试类FSM的优点FSM 虽然Unity已经有了动画状态机但是为了代码的开放封闭原则这时FSM有限状态机的作用就凸显了出来。 创建控制有限状态机的脚本 先创建一个脚本用来控制有限状态机FSM),主要用于切换状态。 首先用一个枚举列举出各个状态 public enum StateType {ldle,run,jumping,dying,shooting }然后我们需要一个容器来保存当前的状态用字典存储起来方便随后的更改下一状态随后初始化类将字典创建并添加两个增加和设置状态的方法最后再每一帧执行。代码如下 //当前在运行什么状态private State currentState;public StateType stateType;//各个状态的标识符//写一个保存所有状态的容器private DictionaryStateType, State allSaveState;public FSMControl(){allSaveState new DictionaryStateType, State();}public void OnTick()//每一帧执行一次{currentState?.OnUpdate();}public void AddState(StateType stateType, State state){if (allSaveState.ContainsKey(stateType))return;allSaveState.Add(stateType, state);}public void SetState(StateType stateType)//我们需要传一个参数告诉状态机需要切换到哪一个状态中去{if (currentState allSaveState[stateType]) return;//判断当前状态是否重复currentState?.OnEnter();//判断当前状态是否为空currentState allSaveState[stateType];currentState.OnEnter();}完整代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine;public enum StateType {ldle,run,jumping,dying,shooting } public class FSMControl {//当前在运行什么状态private State currentState;public StateType stateType;//各个状态的标识符//写一个保存所有状态的容器private DictionaryStateType, State allSaveState;public FSMControl(){allSaveState new DictionaryStateType, State();}public void OnTick()//每一帧执行一次{currentState?.OnUpdate();}public void AddState(StateType stateType, State state){if (allSaveState.ContainsKey(stateType))return;allSaveState.Add(stateType, state);}public void SetState(StateType stateType)//我们需要传一个参数告诉状态机需要切换到哪一个状态中去{if (currentState allSaveState[stateType]) return;//判断当前状态是否重复currentState?.OnEnter();//判断当前状态是否为空currentState allSaveState[stateType];currentState.OnEnter();}}设置FSM状态机下的各个状态 接下来将展示其中的一个状态以此类推可以写出其他的状态 using System.Collections; using System.Collections.Generic; using UnityEngine;public class ldle: State {private Animator animator;private float deltaTime 5f;private FSMControl fsm;public ldle(Animator animator,FSMControl fsm){this.animator animator;this.fsm fsm;} //刚刚进入状态时的行为public override void OnEnter(){Debug.Log(闲);} //正在进行状态时的行为public override void OnUpdate(){Debug.Log(站着吧);if (deltaTime 0){deltaTime - Time.deltaTime;if (deltaTime0){fsm.SetState((StateType.run));//更改状态为跑}}} //退出状态后的行为public override void OnExit(){Debug.Log(该动起来了);} } 可以根据自己的条件去更改切换状态的条件我这里设置的是5秒后改变状态为跑 添加测试类 但我们将前两个脚本写完就可以添加测试类也就是增加各个状态以及设置初始状态的操作后就可以正常运行了 using System.Collections; using System.Collections.Generic; using UnityEngine;public class TestFSM : MonoBehaviour {private FSMControl fsm;private StateType stateType;private Animator animator;private void Awake(){fsm new FSMControl();animator GetComponentInChildrenAnimator();fsm.AddState(StateType.ldle, new ldle(animator,this.fsm));fsm.AddState(StateType.run, new run(animator));fsm.SetState(StateType.ldle);}private void Update(){fsm.OnTick();} }FSM的优点 当你需要新的状态时可以直接设置脚本继承FSMControl保证了代码的开放封闭原则如果使用动画状态机的切换则需要直接更改原来的代码运用FSM就可以直接创建新的脚本就能实现增加其他状态了
http://www.dnsts.com.cn/news/247184.html

相关文章:

  • 网站兼容问题网站access数据库被攻击不断增大
  • 电商网站设计风格网站服务
  • 网络推广网站河南电商网站首页设计规范
  • 张家港网站制作公司网站无法下载视频 怎么做
  • wordpress 评论出错网站内优化怎么做
  • 广州做一个营销网站多少钱哪个网站可以兼职做效果图
  • 要建立网站和账号违法违规行为数据库和什么黑名单四川电子商务网站
  • 网站建立连接不安全怎么处理自助建站哪个好
  • 佛山房地产网站建设wordpress upyun
  • 百度网站推广费用多少城市建设档案馆网站
  • 用ps做网站是用像素还是毫米长沙本土网站制作公司
  • 域名的网站建设方案书怎么制作自己的免费网站
  • 官方网站模版安徽建设厅网站节能北备案
  • 网站添加wordpress博客中国产品网网址
  • 谷歌推广电话西宁整站优化
  • 路由下做网站映射我的世界是怎么做的视频网站
  • 中企动力做的电梯网站百度收录网站电话
  • 代码交易网站线上编程哪家比较好
  • 网站建设需要干什么wordpress注入点
  • 镇海做网站网站数据库空间增大
  • 直播型网站开发广安网站建设服务
  • 做苗木的哪个网站效果好湖南平台网站建设企业
  • cnnic可信网站必须做吗企业网站建设文章
  • c 网站开发 视频手机p2p网站
  • 直播网站开发教程手机界面设计尺寸规范
  • 连云港市网站建设中国工信部网站备案
  • 娄底市建设银行宣传部网站阿里巴巴国际网站官网
  • 网站模板下载工具油烟机seo关键词
  • 家在坪山业主论坛家在深圳广州官网优化
  • 网站推广公司ihanshi以企业介绍为主做外贸网站好吗