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

网站开发建设费用node框架做网站

网站开发建设费用,node框架做网站,山西建设部网站,wordpress帐号一种行为设计模式。特点是用类的方式去管理状态。优点:对每个状态进行了封装,提高了代码的可维护性;减少了条件判断语句的使用,降低维护成本;易于扩展,每次新增状态都无需大规模修改其他类,符合…

一种行为设计模式。

特点是用类的方式去管理状态。

优点:

  1. 对每个状态进行了封装,提高了代码的可维护性;
  2. 减少了条件判断语句的使用,降低维护成本;
  3. 易于扩展,每次新增状态都无需大规模修改其他类,符合开闭原则;

缺点:

  1. 会导致类的增加,每个状态都会是一个单独的类;
  2. 增加了性能的开销,状态的实例化会导致性能消耗增加。

用途:

  1. 设计游戏中人物的状态
  2. 设计网络连接时的状态
  3. 设计订单的状态

主要组成部分:

状态的接口:它定义了每个状态的实现规则。

每个状态的具体实现类:定义了状态的具体的实现逻辑和切换逻辑。

上下文(或者叫控制器):维护一个具体状态的引用,通常是指调用状态对象。

实例:

//状态的接口
using UnityEngine;/// <summary>
/// 每个场景的状态接口类
/// </summary>
public abstract class ISceneState
{   private string mSceneName;//场景名称protected SceneStateController mController;//场景状态控制器public ISceneState(string sceneName, SceneStateController controller){mSceneName = sceneName;mController = controller;}public string SceneName{get { return mSceneName; }}/// <summary>/// 状态开始时调用/// </summary>public virtual void StateStart() { }/// <summary>/// 状态结束时调用/// </summary>public virtual void StateEnd() { }/// <summary>/// 状态更新时调用/// </summary>public virtual void StateUpdate() { }
}
//状态的实现类
using UnityEngine;
using UnityEngine.UI;public class StartState: ISceneState
{public StartState(SceneStateController controller) :base("01StartScene", controller){}private Image mLOGO;private float mSmoothingTime = 1f;//LOGO过渡时间private float mWaitTime = 2f;//进入MainMenue前等待时间public override void StateStart(){mLOGO = GameObject.Find("Canvas/LOGO").GetComponent<Image>();mLOGO.color = Color.black;}public override void StateUpdate(){//LOGO图片的缓冲过渡mLOGO.color = Color.Lerp(mLOGO.color, Color.white, mSmoothingTime * Time.deltaTime);//等待时间mWaitTime -= Time.deltaTime;//LOGO图片的缓冲过渡if(mWaitTime <= 0){mController.SetState(new MainMenuState(mController));}}
}
//状态的实现类
using UnityEngine;
using UnityEngine.UI;public class MainMenuState: ISceneState
{public MainMenuState(SceneStateController controller): base("02MainMenuScene", controller){}public override void StateStart(){GameObject.Find("Canvas/StartButton").GetComponent<Button>().onClick.AddListener(StartGameButtonOnClick);}public void StartGameButtonOnClick(){mController.SetState(new BattleState(mController));}
}
//状态的实现类
public class BattleState: ISceneState
{public BattleState(SceneStateController controller): base("03BattleScene", controller){}public override void StateStart(){GameFacade.Instance.Init();}public override void StateEnd(){GameFacade.Instance.Release();}public override void StateUpdate(){   if(GameFacade.Instance.isGameOver){mController.SetState(new MainMenuState(mController));}GameFacade.Instance.Update();}
}
//上下文(或者叫控制器):
using UnityEngine;
using UnityEngine.SceneManagement;public class SceneStateController
{private ISceneState mState;//当前场景状态private AsyncOperation mAO;//异步加载场景private bool mIsRunStart = false;//表示场景是否已经正在运行中/// <summary>/// 设置场景状态/// </summary>/// <param name="state">状态</param>/// <param name="isLoadScene">是否加载场景</param>public void SetState(ISceneState state, bool isLoadScene = true){   //退出状态时的处理if(mState != null){mState.StateEnd();}//设置新状态mState = state;//加载场景if(isLoadScene){mAO = SceneManager.LoadSceneAsync(mState.SceneName);mIsRunStart = false;}else{mState.StateStart();mIsRunStart = true;}}/// <summary>/// 更新场景状态/// </summary>public void StateUpdate(){if (mAO != null && mAO.isDone == false) return;if(mIsRunStart == false && mAO != null && mAO.isDone == true){mState.StateStart();mIsRunStart = true;}if(mIsRunStart && mState != null){mState.StateUpdate();}}
}

http://www.dtcms.com/a/494109.html

相关文章:

  • 网站建设手机端是什么意思做汽车商城网站
  • 计算机系毕设代做网站吴江区建设局网站
  • 罗庄建设局网站重庆市建设工程信息网查证件
  • 北京网站设计工作室北京火车站建站时间
  • 检察门户网站 建设意义国内贸易平台
  • 在线免费域名网站解析免费行情网站大全
  • 审计网站建设毕业设计年终总结汇报ppt模板
  • 想接做网站的单子企业网站建设公司电话西安
  • 中山专业外贸网站建设中国建筑集团有限公司官网校园招聘
  • 红色 网站深圳网站建设antnw
  • 龙华学校网站建设对网站建设提建议
  • 电子商务网站运营方案平面设计logo创意图片
  • 上海装修公司十大排名桂平seo关键词优化
  • 福州做网站多少钱建筑工程公司名字
  • 国内高清视频素材网站注册网站需要多久
  • 温州建网站哪家强涉及部署未备案网站
  • 网站建设需要云主机吗wordpress 4.2.2
  • 网站备案证书如何打开如何免费申请域名和网址
  • 网站网速慢程序员培训学校
  • 专业建设网站公司哪家好设计官网论坛
  • 个人网站也要备案吗高端网站建设1
  • 阿里云建网站教程那些做黑网站的都是团体还是个人
  • wordpress做定制T恤的网站自己做的手机网站怎么加入小程序
  • 快速网站建设公司ktv网站建设方案
  • 怎样做自己的的社交网站定制建站
  • 网站制作的收费标准wordpress切换作者
  • 南京高端网站制作公司wordpress 外教 缩略图
  • 做网站网站会被判多久食品品牌网站策划
  • 彩票网站维护会跑路吗电子商务网站建设书
  • 2019为网站网站做代理被判缓刑佛山市住房和城乡建设局网站