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

难道做网站的工资都不高吗穿衣搭配的网站如何做

难道做网站的工资都不高吗,穿衣搭配的网站如何做,互联网营销师怎么考,上海工作单位名称大全命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成对象,从而使得可以使用不同的请求、队列或日志请求,以及支持可撤销的操作。命令模式通常包含四个主要角色:命令(Command&#xf…

命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成对象,从而使得可以使用不同的请求、队列或日志请求,以及支持可撤销的操作。命令模式通常包含四个主要角色:命令(Command)、接收者(Receiver)、请求者(Invoker)和客户端(Client)。命令对象持有请求的详细信息,而接收者则执行这些请求。

什么时候使用命令模式

  • 需要支持撤销/重做功能时:例如文本编辑器、绘图软件等需要频繁撤销和重做操作的应用。
  • 需要将请求发送者与接收者解耦时:当请求的发送者和接收者之间的依赖关系需要降低时,可以使用命令模式。
  • 需要记录请求日志时:当需要跟踪请求的历史以进行审计时,命令模式提供了一种优雅的解决方案。
  • 需要实现异步请求时:可以将请求放入队列中,并在未来的某个时间点执行。

在 Unity 中使用 命令模式

在 Unity 中实现 命令模式 的示例,我们可以创建一个简单的场景,其中玩家可以使用命令来控制一个角色的移动和跳跃。这个示例将演示如何使用命令模式来处理这些操作。

1、定义命令接口

首先,我们定义一个命令接口,描述执行命令的基本操作。

public interface ICommand
{void Execute();void Undo();
}
2、定义接收者类

接下来,我们定义一个接收者类,代表要执行命令的对象(如角色)。

using UnityEngine;public class PlayerCharacter : MonoBehaviour
{public void Move(Vector3 direction){transform.position += direction;Debug.Log($"Moved to: {transform.position}");}public void Jump(float height){transform.position += Vector3.up * height;Debug.Log($"Jumped to: {transform.position}");}
}
3、实现具体命令类

然后,我们实现具体的命令类,分别用于角色的移动和跳跃操作。

public class MoveCommand : ICommand
{private PlayerCharacter player;private Vector3 direction;public MoveCommand(PlayerCharacter player, Vector3 direction){this.player = player;this.direction = direction;}public void Execute(){player.Move(direction);}public void Undo(){player.Move(-direction); // 反向移动}
}public class JumpCommand : ICommand
{private PlayerCharacter player;private float height;public JumpCommand(PlayerCharacter player, float height){this.player = player;this.height = height;}public void Execute(){player.Jump(height);}public void Undo(){player.Move(-Vector3.up * height); // 反向跳跃}
}
4、实现请求者类

我们实现一个请求者类,用于调用命令。

using System.Collections.Generic;
using UnityEngine;public class CommandInvoker : MonoBehaviour
{private Stack<ICommand> commandHistory = new Stack<ICommand>();public void ExecuteCommand(ICommand command){command.Execute();commandHistory.Push(command);}public void UndoCommand(){if (commandHistory.Count > 0){ICommand lastCommand = commandHistory.Pop();lastCommand.Undo();}}
}
5、创建游戏管理器

最后,我们创建一个游戏管理器类,处理用户输入并执行命令。

using UnityEngine;public class GameManager : MonoBehaviour
{public PlayerCharacter playerCharacter;private CommandInvoker commandInvoker;void Start(){commandInvoker = gameObject.AddComponent<CommandInvoker>();}void Update(){if (Input.GetKeyDown(KeyCode.W)){var moveCommand = new MoveCommand(playerCharacter, Vector3.forward);commandInvoker.ExecuteCommand(moveCommand);}else if (Input.GetKeyDown(KeyCode.S)){var moveCommand = new MoveCommand(playerCharacter, Vector3.back);commandInvoker.ExecuteCommand(moveCommand);}else if (Input.GetKeyDown(KeyCode.Space)){var jumpCommand = new JumpCommand(playerCharacter, 2.0f);commandInvoker.ExecuteCommand(jumpCommand);}else if (Input.GetKeyDown(KeyCode.U)){commandInvoker.UndoCommand(); // 撤销上一个命令}}
}
6、在 Unity 中测试
  • 创建一个带有 Collider 的 Cube 作为玩家角色,并附加 PlayerCharacter 脚本。
  • 创建一个空的 GameObject,命名为 GameManager,并附加 GameManager 脚本。
  • 运行游戏,使用 W 和 S 键控制前后移动,使用 Space 键跳跃,使用 U 键撤销上一个命令。

7、示例分析
  • 命令(ICommand):定义执行和撤销的基本操作。
  • 接收者(PlayerCharacter):实现角色的具体操作。
  • 具体命令(MoveCommand 和 JumpCommand):封装角色的移动和跳跃逻辑。
  • 请求者(CommandInvoker):负责执行和撤销命令。


这个示例展示了如何在 Unity 中实现 命令模式,通过封装角色的操作为命令对象,使得用户能够灵活地控制角色,同时支持撤销操作。这种模式在需要记录和管理用户输入的场景中非常有用。

今天是2024年12月4日

重复一段毒鸡汤来勉励我和你

你的对手在看书

你的仇人在磨刀

你的闺蜜在减肥

隔壁的老王在练腰

而你在干嘛?

http://www.yayakq.cn/news/374076/

相关文章:

  • 门户网站属于新媒体吗最近三天的国内新闻
  • wordpress eshop 中文桂林网站优化注意事项
  • 备案关闭网站陕西网站建设制作
  • 国内建站源码陕西建设交通集团招聘信息网站
  • 梁山网站建设价格网页版梦幻西游是网易的吗
  • 樟木头镇网站建设公司网站建设开票分类编码
  • 网站正在建设中怎么办团队建设优缺点
  • 做网站买过域名之后wordpress分页标签
  • 简述企业网站的网络营销功能做外贸网站一定要会英语吗
  • 网站备案收费吗政务服务大厅网站建设方案
  • 最好的完全免费开源企业网站饰品网站建设
  • 无锡网站设计服务西安高风险区全部降为低风险
  • 涂料网站建设怎么让别人看到自己做的网站
  • 网站文章收录舒城网站建设
  • 网站建设包含域名国家高新技术企业申请条件
  • 聊城微信推广网站健康中国app
  • 网站被挂黑链了网站后门怎么去除
  • 安徽建海建设工程有限公司网站广西网站建设原创
  • 青岛外贸假发网站建设网站建设培训学费
  • 网站及备案沧州市有建网站的吗
  • 公司网站建设设计公司网站建设交流论坛
  • 用老域名做新网站河南省建设厅执业资格注册中心
  • 吉林市做网站的公司哪家好咸阳做网站公司电话
  • 策划书网站项目目标需求分析网站建设 福田
  • 依安县建设网站外包做网站赚钱么
  • 建站模板2022年国内重大新闻
  • 第三方做农产品价格数据的网站烟台建网站哪家好
  • 单位网站建设情况网页设计与制作教程第二版张晓蕾课后答案
  • 网站优化推广费用确保网站建设又在前列
  • 关于茶叶网站模板项目管理软件对比