网站公告 | 泰课在线2017年双十一活动11.7~11.17全站6.8折,三大活动点击查看
查看: 472|回复: 5
收起左侧

[即步] Unity3d实现回滚操作(undo和Redo)

[复制链接]

[即步] Unity3d实现回滚操作(undo和Redo)[复制链接]

13007234056 发表于 2017-8-30 14:44:39 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式 回复:  5 浏览:  472
本文实现一个在无需使用Command模式和Momento模式下实现撤销、重做功能
阅读原文获取源码下载链接
先展示下效果图

使用栈方式,将各个操作的撤销/恢复操作存储下来

当执行undo和redo操作时,执行栈里面的撤销/恢复操作

Demo操作实现
[C#] 纯文本查看 复制代码
using UndoMethods;
using UnityEngine;

public class MyText : MonoBehaviour
{
        private Color color;

        private void Start()
        {
                //随机添加10种颜色
                for (int i = 0; i < 3; i++)
                {                        
                        switch (i)
                        {
                                case 0:color = Color.red;break;
                                case 1:color = Color.green;break;
                                case 2:color = Color.blue;break;
                                default:break;
                        }
                        SetColor(color);
                }
        }

        private void Update()
        {
                if (Input.GetKeyDown(KeyCode.R))
                {
                        UndoRedoManager.Instance().Redo();
                }
                else if (Input.GetKeyDown(KeyCode.Z))
                {
                        UndoRedoManager.Instance().Undo();
                }
        }

        private void SetColor(Color color)
        {
                //存储上一次Cube颜色
                UndoRedoManager.Instance().Push(p => SetColor(p), this.GetComponent<Renderer>().material.color, "新增颜色");
                this.GetComponent<Renderer>().material.color = color;
        }
}
简单的实现了一个Cube颜色值的回滚
效果图如下

按下Z,回退颜色由blue->green->red
按下R,恢复颜色由red->green->blue

原文地址:blog.liujunliang.com.cn

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
+1
469°C
5
  • rannar
  • rannar
  • yeweidon111
  • 只爱脆夹心
  • gracezrxx
过: 他们
因分享而快乐,学习以自强!
rannar 发表于 2017-8-31 00:47:04 显示全部楼层
谢谢楼主分享
因分享而快乐,学习以自强!
rannar 发表于 2017-8-31 00:47:59 显示全部楼层
可以用命令模式实现do和undo的功能
因分享而快乐,学习以自强!
yeweidon111 发表于 2017-8-31 10:31:50 显示全部楼层
谢谢楼主分享                        
因分享而快乐,学习以自强!
只爱脆夹心 发表于 2017-9-4 09:47:44 显示全部楼层
收了后面慢慢看
因分享而快乐,学习以自强!
gracezrxx 发表于 2017-9-8 09:03:37 显示全部楼层
还不是很明白,留了学习下
因分享而快乐,学习以自强!

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 沪ICP备14023207号-9 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.2

1
QQ