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

wordpress采集单篇文章搜索引擎优化seo论文

wordpress采集单篇文章,搜索引擎优化seo论文,做网站背景图片浪漫爱情,河北邢台疫情最新情况我是标题 前言有限制状态机框架框架图:主要代码: 前言 一般的小型游戏的状态机会使用一个枚举类来枚举所有的状态,然后使用一个switch case来处理所有状态的行为逻辑,但是用这种方式会形成大量的冗余,因为所有的行为逻…

我是标题

    • 前言
    • 有限制状态机框架
      • 框架图:
      • 主要代码:

前言

一般的小型游戏的状态机会使用一个枚举类来枚举所有的状态,然后使用一个switch case来处理所有状态的行为逻辑,但是用这种方式会形成大量的冗余,因为所有的行为逻辑都在一个脚本中,所以团队开发来说模块性不足,可扩展性低。所以就有了有限制状态机(FSM),行为逻辑写在别的脚本中,每个行为逻辑之间互相独立,并且通过一个状态控制中心来进行控制,同时有“大脑”BlackBoard来实现整体之间的数据互通和共享,可拓展性和模块性强,耦合度低。

有限制状态机框架

来源:B站打工人小棋 跳转

框架图:

在这里插入图片描述

主要代码:

黑板类:提供全局的数据共享

public class BlackBoard
{private Dictionary<string, object> data = new Dictionary<string, object>();// 获取数据public T GetData<T>(string key){if (data.TryGetValue(key, out object value)){return (T)value;}return default(T);}// 设置数据public void SetData(string key, object value){if (data.ContainsKey(key)){data[key] = value;}else{data.Add(key, value);}}
}

定义一个接口类作为所有动作的基类

public interface Istate
{void OnEnter();void OnExit();void OnUpdate();
}

状态机类:
容纳键值对查找的字典。
对外公开的Add和Remove和 SwitchState的方法。
全局共享的黑板。
目前的状态。

public class FSM
{public enum State{Idle,Move,Attack,}public Istate currentState;public Dictionary<State, Istate> states;public BlackBoard blackBoard;public FSM(){blackBoard = new BlackBoard();states = new Dictionary<State, Istate>();}public void AddState(State stateType, Istate state){if(states.ContainsKey(stateType)){Debug.LogWarning("ISEXIST");return;}states.Add(stateType, state);}public void RemoveState(State stateType){if( states.ContainsKey(stateType)){states.Remove(stateType);}else{Debug.LogWarning("DO NOT EXIST");}}public void SwitchState(State stateType){if(!states.ContainsKey(stateType)) {Debug.LogWarning("DO NOT EXIST");return;}if(currentState != null){currentState.OnExit();}if(states.TryGetValue(stateType, out Istate theNewState)) currentState = theNewState;currentState.OnEnter();}public void OnUpdate(){currentState?.OnUpdate();}
}

Idle状态定义示例:
需要接受有玩家脚本的一个构造函数,否者无法调用到玩家脚本中的公开的数据。

public class MoveState : Istate
{private PlayerController playerController;public MoveState(PlayerController playerController){this.playerController = playerController;}public void OnEnter(){Debug.Log("Enter Move State");}public void OnExit(){Debug.Log("Exit Move State");}public void OnUpdate(){// 移动逻辑float horizontalInput = Input.GetAxis("Horizontal");float verticalInput = Input.GetAxis("Vertical");Vector3 movement = new Vector3(horizontalInput, 0, verticalInput) * playerController.moveSpeed * Time.deltaTime;playerController.transform.Translate(movement);// 检测是否停止移动if (horizontalInput == 0 && verticalInput == 0){playerController.fsm.SwitchState(FSM.State.Idle);}// 检测是否有攻击输入if (Input.GetKeyDown(KeyCode.Space)){//更换到攻击模式 如果按下空格的话playerController.fsm.SwitchState(FSM.State.Attack);}}
}

使用:

public class PlayerController : MonoBehaviour
{public float moveSpeed = 5f;public FSM fsm;void Start(){fsm = new FSM();// 添加状态fsm.AddState(FSM.State.Idle, new IdleState(this));fsm.AddState(FSM.State.Move, new MoveState(this));fsm.AddState(FSM.State.Attack, new AttackState(this));// 初始状态为空闲fsm.SwitchState(FSM.State.Idle);}void Update(){fsm.OnUpdate();}
}
http://www.dtcms.com/wzjs/107716.html

相关文章:

  • 网站设计网页设计最新提升关键词排名软件
  • 网站做链接的意义是什么搜索引擎优化seo什么意思
  • 长春百度搜索优化seo招聘网
  • 怎么破解网站后台密码线上推广的公司
  • 设计色彩网站seo排名首页
  • 做网站和seo哪个好搜索引擎调词平台多少钱
  • 学做网站的基本crm系统网站
  • wordpress category archives:seo推广怎么入门
  • 网页制作的企业长春网络推广优化
  • 武汉教育网站建设优化北京seo编辑
  • 域名如何做跳转到其他网站上seo推广培训中心
  • 用卫生纸做的礼物街网站南宁seo公司哪家好
  • 佛山从事网站建设百度竞价价格查询
  • 外贸独立建站哪里比较好适合成人参加的培训班
  • 保定网站制作软件win7优化大师下载
  • 在自己网站做blog世界杯球队最新排名
  • 做律师网站的公司搜索引擎优化的例子
  • 邹城哪个公司做网站好新手怎样做网络推广
  • wordpress主題移动端seo网站优化专家
  • 东莞网站建设制作网络推广一个月工资多少
  • 做网站学不需要做后台管理系统沈阳网站关键词优化公司
  • 做一借款撮合网站广州营销网站建设靠谱
  • 7免费crm长春seo整站优化
  • 苏州网站建设软件优化公司排名
  • 北京网站建设案例微信scrm
  • 九江做网站的大公司深圳网络推广平台
  • 山西省最新干部调整百度如何优化排名靠前
  • 公安备案网站热线深圳网络seo推广
  • 深圳做h5网站设计谷歌seo代运营
  • 深圳专业优定软件网站建设网站数据分析