Unity插件Paint in 3d pro是如何实现Runtime Undo和Redo的
Posted avi9111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity插件Paint in 3d pro是如何实现Runtime Undo和Redo的相关的知识,希望对你有一定的参考价值。
目录
神作,不用多解释
学习这个项目,不但能让你掌握基础的3d实战知识,还能了解框架,了解Editor扩展开发,了解C#语法
“当然,好处多多,难道一个坏处都没有,应该就是上手门槛挺高吧”
国内这种资源也很容易获得
要做一个画画工具,或者APP
Undo是最基本
这里稍微分析一下如何实现:(然而并没有分析)
这是Pro版本,和几年前普通的Paint in 3d也完全不可比
几年前还只能Editor Undo,不能runtime回退
不过当年的Hist—manager还是做得挺巧妙,今天我们一起来看下Pro版本的History如何做的呢》》???
现在的Paint in 3d pro版本除了内核换成gpu绘制,架构大改之外,还加了很多功能和很多例子:
其中一个例子就是In Game的Undo和Redo
看了一下,调用方法很简单
P3dStateManager.UndoAll();
主要依赖
P3dStateManager,和
P3dPaintableTexture
P3dStateManager 本身并没有多少代码,也不是核心。。。。。。
至于,具体回退+Redo的分析和实现,之后想起再说吧,谢谢阅读
开源或者被开源的世界
回滚和历史草的关键还是一开始那个图
主要的绘制实现,以及回滚绘制的实现,还是通过上面P3dPaintable Texture这个类(组件)
其中Undo有3个选项
1 是 None, 这有点废话;
2 是Texture,反正选了没有用,应该是要特别指定;
3 是记录本地操作命令(有点像帧同步),
“”极像或者100%相同都是严重问题,回滚按2下,能回退一次,也只能回退一次,之后回滚按多少下也没作用,只有第一次有效(嗨,你个帧同步)“”
总之就是有各种bug(嗨,你个软件开发),不过还好有源码
后来发现,还是自己造成的bug
用了imgui和paint3d冲突,其实ugui也冲突,只是人家的框架有封装
HitScene.cs
InputManager.cs
至于怎么判断是否点击在ui上,避免2d和3d的冲突,可参考:
https://blog.csdn.net/avi9111/article/details/116568250?spm=1001.2014.3001.5502
开源最大的作用不是分享,不是共享,不是灵活,不是集思广益,真正的开源的作用是修bug
一个人修,或一个团队修还真修不好;
还真的需要一个天才做架构,然后一堆搬砖基于开源修bug,和改善流程,虽然我不想承认自己是搬砖的
也唯有这样才能把一个产品做好
而扑街的产品遍地都是,高达99%都是平庸的产品
但又因为开源,使得整个软件“世界”都是平的,总有上千上万个产品
所以能形成一个好的开源生态,至少能出现上千个好产品
这就是开源神作的本质
看看文档
看看例子
注意的就是默认绘制颜色是白色,shader texture默认白色,会感觉没效果,改下颜色就好了,也不需要怎么配置,就能做出3d绘制的效果,基于Paint IN 3d pro这个插件
看看代码实现
很多,罄竹难书,自己看源码
以上是关于Unity插件Paint in 3d pro是如何实现Runtime Undo和Redo的的主要内容,如果未能解决你的问题,请参考以下文章
都都有哪些公司或企业再用Unity3D PRO 虚拟现实、跨平台应用程序开发引擎(商业版)?
Unity3d UGUI 通用Confirm确认对话框实现(Inventory Pro学习总结)
如何使用 Unity3D 为 iPad Pro 创建多屏体验?