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

外贸公司没网站ios个人开发者账号多少钱

外贸公司没网站,ios个人开发者账号多少钱,百度发布,网站手机模板源码Unity实现设计模式——命令模式 推荐一个Unity学习设计模式很好的GitHub地址:https://github.com/QianMo/Unity-Design-Pattern 有非常多的Star 一、介绍 命令模式使得请求的发送者与请求的执行者之间消除耦合,让对象之间的调用关系更加灵活。在命令模…

Unity实现设计模式——命令模式

推荐一个Unity学习设计模式很好的GitHub地址:https://github.com/QianMo/Unity-Design-Pattern 有非常多的Star

一、介绍

命令模式使得请求的发送者与请求的执行者之间消除耦合,让对象之间的调用关系更加灵活。在命令模式中,会将一个命令封装成一个对象,同时命令模式也支持可撤销的操作。
在这里插入图片描述
命令里面通常聚合接收者,初始化命令时传入接收者,调用者直接调用命令即可

二、实现

这里使用Unity上下左右控制物体移动同时记录移动信息方便撤回为例子演示命令模式

1.ICommand

命令接口基类

public interface ICommand
{void Execute();void UnExecute();
}

2.MoveCommand

具体的移动命令

class MoveCommand : ICommand
{private MoveDirection _direction;private MoveCommandReceiver _receiver;private float _distance;private GameObject _gameObject;//Constructorpublic MoveCommand(MoveCommandReceiver reciever, MoveDirection direction, float distance,GameObject gameObjectToMove){this._receiver = reciever;this._direction = direction;this._distance = distance;this._gameObject = gameObjectToMove;}//Execute new commandpublic void Execute(){_receiver.MoveOperation(_gameObject, _direction, _distance);}//Undo last commandpublic void UnExecute(){_receiver.MoveOperation(_gameObject, InverseDirection(_direction), _distance);}//invert the direction for undoprivate MoveDirection InverseDirection(MoveDirection direction){switch (direction){case MoveDirection.up:return MoveDirection.down;case MoveDirection.down:return MoveDirection.up;case MoveDirection.left:return MoveDirection.right;case MoveDirection.right:return MoveDirection.left;default:Debug.LogError("Unknown MoveDirection");return MoveDirection.up;}}//So we can show this command in debug output easilypublic override string ToString(){return _gameObject.name + " : " + MoveDirectionString(_direction) + " : " + _distance.ToString();}//Convert the MoveDirection enum to a string for debugpublic string MoveDirectionString(MoveDirection direction){switch (direction){case MoveDirection.up:return "up";case MoveDirection.down:return "down";case MoveDirection.left:return "left";case MoveDirection.right:return "right";default:return "unkown";}}
}

3.MoveCommandReceiver

命令接收者

class MoveCommandReceiver{public void MoveOperation(GameObject gameObjectToMove, MoveDirection direction, float distance){switch (direction){case MoveDirection.up:MoveY(gameObjectToMove, distance);break;case MoveDirection.down:MoveY(gameObjectToMove, -distance);break;case MoveDirection.left:MoveX(gameObjectToMove, -distance);break;case MoveDirection.right:MoveX(gameObjectToMove, distance);break;}}private void MoveY(GameObject gameObjectToMove, float distance){Vector3 newPos = gameObjectToMove.transform.position;newPos.y += distance;gameObjectToMove.transform.position = newPos;}private void MoveX(GameObject gameObjectToMove, float distance){Vector3 newPos = gameObjectToMove.transform.position;newPos.x += distance;gameObjectToMove.transform.position = newPos;}}

4.命令的发出者(或者说是图中Clinet)

这里将命令发出者和Client放到了一起

public class InputHandler : MonoBehaviour
{public float moveDistance = 10f;public GameObject objectToMove;private MoveCommandReceiver moveCommandReciever;private Stack<MoveCommand> commandStack1 = new Stack<MoveCommand>();private Stack<MoveCommand> commandStack2 = new Stack<MoveCommand>();void Start(){moveCommandReciever = new MoveCommandReceiver();if (objectToMove == null){Debug.LogError("objectToMove must be assigned via inspector");this.enabled = false;}}public void Undo(){if (commandStack1.Count > 0){MoveCommand moveCommand = commandStack1.Pop();moveCommand.UnExecute();commandStack2.Push(moveCommand);}}public void Redo(){if (commandStack2.Count > 0){MoveCommand moveCommand = commandStack2.Pop();moveCommand.Execute();commandStack1.Push(moveCommand);}}private void Move(MoveDirection direction){MoveCommand moveCommand = new MoveCommand(moveCommandReciever, direction, moveDistance, objectToMove);moveCommand.Execute();commandStack1.Push(moveCommand);}//Simple move commands to attach to UI buttonspublic void MoveUp() { Move(MoveDirection.up); }public void MoveDown() { Move(MoveDirection.down); }public void MoveLeft() { Move(MoveDirection.left); }public void MoveRight() { Move(MoveDirection.right); }void Update(){if (Input.GetKeyDown(KeyCode.UpArrow)){MoveUp();}if (Input.GetKeyDown(KeyCode.DownArrow)){MoveDown();}if (Input.GetKeyDown(KeyCode.LeftArrow)){MoveLeft();}if (Input.GetKeyDown(KeyCode.RightArrow)){MoveRight();}if (Input.GetKeyDown(KeyCode.R)){Redo();}if (Input.GetKeyDown(KeyCode.U)){Undo();}}
}
http://www.yayakq.cn/news/71959/

相关文章:

  • 酒店网站建设注意什么青海网站建设公司电话
  • 西安seo站内优化学校开发网站公司
  • 做网站需要准备的素材东莞最好的网站建设价格低
  • 全网网站建设推广wordpress树状文章
  • 网站域名备案和做网站为什么做的网站预览出来什么都没有
  • 网站建设后的优势厦门帮忙建设网站
  • 手机和pc端网站建设如何做静态网站
  • 深圳网站制作公司电话上海建设协会网站
  • 微信 网站设计模板如何自学网站建设书籍
  • 长沙建站智能模板电商网站对比 京东商城 淘宝网 阿里巴巴
  • 备案期间网站能打开吗石家庄新闻发布会直播
  • 谷歌的英文网站thinkphp网站优化
  • 网站售后服务内容做任务游戏能赚钱的网站
  • 移动局域网ip做网站最新网站域名ip地址查询
  • 氧os哪个网站做的最好灵当crm客户管理系统
  • 社交网站开发教程河南省建设厅资质公示
  • 设置网站的默认文档做个app软件多少钱
  • 怎样在在农行网站上做风险评估上海公司有哪些
  • 做网站应该拿多少提成上海微网站建设
  • 搞网站建设赚钱不国外网站 工信部备案
  • 做简单手机网站多少钱呀ios开发者网站
  • 网站建设套运营哪里学的比较专业
  • 网站开发哪里有培训网站改版准备
  • 站长之家whois哪些网站做渣土车租恁
  • 北京建站优化免费网络电话软件哪个好用
  • 企业做网站 乐云seo中国铁建统一企业门户
  • 深圳做英文网站可以做女的游戏视频网站
  • 医疗保险网站开通建设广安网站建设gphvip
  • 一流的盐城网站开发外贸发货做网站怎么写
  • 用哪个软件做网站12388网站建设管理情况