Unity签名(二)重放+撤回


GO

1、写字过程重放的原理介绍

说明:将书写过的坐标和处理速度保存各自的List 中。在update中进行触发重放
1)排坑1.重放的过程中出现笔划之间的粘连,也就是第二笔划的起点链接上一笔划的终点;
解决办法:在这里插入图片描述
上图中的数字代表着需要处理坐标的点,其中红色的数字代表写字用到的坐标,黄色的数字及代表着笔划于笔划之间的空值坐标,由此来进行区分;注意这个操作在后面的笔划撤回,也会用到。
代码如下:

 /// <summary>
    /// 重放功能    /存在缺点点之间的粘连
    /// </summary>
    public void RePlay() {
        //  ThreeOrderBézierCurse(pos, distance, 4.5f);
        text.gameObject.SetActive(false);
        BiHuaIndex = 0;
        Clear(texRender);
        Proxy = queue[0];
        IsRePlay = true;
        numA = queue.Count;
        BiHuanIndex = 0;
       BiHuaList.Clear();
        //--------------------避免起始点粘连------------------------
        startPosition = Vector3.zero;
        //brushScale = 0.5f;
        a = 0;
        b = 0;
        s = 0;
    }

2、写字过程撤销到上一画的原理介绍

说明:创建一个关于存储笔画缓存的list,在每次抬起时将画布存储成为一张Texture2D添加到列表中,并且记录当前的Index,后面有用;
排坑:
1.这里面涉及到Texture2D与RenderTexture之间的转换
2.撤回到第几笔试根据BiHuaIndex进行标记的,然而这样做继续写下去,后点击重播,救护重现之前撤销的几笔,原因是没有在笔划数组中进行相应的坐标清空;清空后就不会发现之前的问题了;

  /// <summary>
    /// 撤回的bool值控制            撤回笔画中的图片,撤回比划的路径值
    /// </summary>
    private bool IsUpdataRawImage;
    /// <summary>
    /// 撤回到上一步----------->和背景没关系,还是进行处理坐标后进行实现
    /// 1.比较笨拙的办法,将每一次提笔的屏幕进行缓存到list列表中,每撤回一个重新赋值图片
    /// </summary>
    public void CtrlZ() {
        //将渲染的rendertxeture进行texure2D转换存储到list
 
        if (IsUpdataRawImage==true)
        {
            //if (isClear==true)
            //{
            //BiHuanIndex--;
            //BiHuaList.RemoveAt(BiHuaList.Count - 1);
            BiHuanIndex = BiHuaList.Count - 1;
            isClear = false;
          //  }
            IsUpdataRawImage = false;
        }   
        BiHuanIndex--;
      
        if (BiHuanIndex < 0)
        {
            OnClickClear();
            IsUpdataRawImage = true;
        }
        else
        {
            RawRoot.texture = BiHuaList[BiHuanIndex];
            raw.texture = BiHuaList[BiHuanIndex];
            texRender = Texture2DToRender(BiHuaList[BiHuanIndex]);
        }
        // texRender = Texture2DToRender(BiHuaList[BiHuanIndex]);
        RemoveBiHua();
        BiHuaList.RemoveAt(BiHuaList.Count - 1);
        print("比划的图片数量" + BiHuaList.Count+"Index"+BiHuanIndex);
    }

获取资源链接:签字2018.3.8f1.package

或者加群交流:139077032
完结:上一站Unity签名(一)书写

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页