本文实例为大家分享了Unity3D撤回命令功能开发,供大家参考,具体内容如下
在类似操作考核的项目中我们经常会遇到回到上一步的需求。所以我们有必要对每一个状态点的所有参与交互的物体的状态进行记录。好了,下面就是代码的实现:
首先肯定要创建命令的基类,
public class BaseCommand { //执行命令 public virtual void ExcuteCommand() { } //撤销命令 public virtual void RevocationCommand() { } }
因为我们控制物体的类似移动改变方式不同,有可能是直接移动的,有可能是用的dotween来操作移动,所以我们的执行命令函数可能对于我们没有实现的必要。下面我们要创建一个用来管理命令的脚本,供我们添加和移除命令,同时这个脚本我们给设置为单例,可供全局调用。如下:
public class CommandManager : MonoBehaviour { public static CommandManager Instance = null; //管理命令 private Stack commandStack = new Stack(); private void Awake() { Instance = this; } //增加命令 public void AddCommand(BaseCommand baseCommand) { commandStack.Push(baseCommand); } //移除命令 并且撤销一步操作 public void RemoveCommand() { if(commandStack.Count>0) { BaseCommand baseCommand = commandStack.Pop(); baseCommand.RevocationCommand(); } } }