Unity插件Paint in 3d pro是如何实现Runtime Undo和Redo的

您所在的位置:网站首页 3d是怎么实现的 Unity插件Paint in 3d pro是如何实现Runtime Undo和Redo的

Unity插件Paint in 3d pro是如何实现Runtime Undo和Redo的

2024-07-06 06:12| 来源: 网络整理| 查看: 265

目录

神作,不用多解释

P3dStateManager,和

P3dPaintableTexture

开源或者被开源的世界

HitScene.cs

InputManager.cs

看看文档

看看例子

看看代码实现

神作,不用多解释

学习这个项目,不但能让你掌握基础的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这个插件

 

看看代码实现

很多,罄竹难书,自己看源码



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3