unity中两种方法实现撤销操作,并实现画图功能

unity中两种方法实现撤销操作,并实现画图功能

在当我们做一些棋牌类的游戏或是逻辑与之相关的项目时,就不得不会遇到撤销这一操作,具体如何简单的实现这类操作呢,下面介绍两种方法,

  • 一种是用栈的方法
  • 一种是用普通的方法
    在有撤销这类逻辑的项目中往往都是带有创建或实例化一个新物体的过程,比如说做一个下棋的小游戏,我们就需要实例化棋子这个Object,再比如绘画,平面绘画也好空间AR或VR绘画也好,我们就需要创建承载lineRenderer这个组件的物体。等等类似逻辑的项目都会事先有这样的过程。那么我们就利用好这个创建新物体或实例化Object的过程来通过栈和普通的方式实现撤销功能。
    用栈实现主要是利用了栈的先进后出,后进先出的特性。

下面我们来通过一个简单的例子分别用这两种方法去实现撤销:
首先我们的目的是通过按下鼠标并拖动实现绘画,然后鼠标抬起结束此次绘画操作,如此重复操作实现绘画功能。最后做个按钮实现撤销功能,撤销一次由鼠标按下到抬起的过程中绘制的任何东西。


1. 用栈的方法实现:
一、打开unity新建一个2d场景,新建一个画布和一个撤销按钮,如下图(具体可根据自己喜欢的风格来)
在这里插入图片描述
然后创建一个空物体命名为Gamemanager然后新建一个脚本取名也叫Gamemanager,将这个将本挂在这个物体下面。

然后在建一个空物体取名为LineFather,用于存储承载LineRenderer的对象。打开新建的脚本,进行如下编辑:
在这里插入图片描述
在这里插入图片描述



2.用普通方法实现撤销:
脚本的编写基本和上面的一样,原理是先获取到LineFather下的最后一个对象,这个对象保留了刚刚进行绘制操作的最后一步所存下来的图案,然后通过销毁这个对象来实现撤下最后一次绘制操作。如图
在这里插入图片描述
在这里插入图片描述
经过测试,也是可以实现同样的功能的。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41294510/article/details/131510272