Odin WindowEditor使用体会

时间:2024-04-08 11:37:47

        看着odin最新版更新了一些Window Editor的功能(其实更了好一阵了,但是之前一直没想过用吧),又去试了下他的demo里面的东西,感觉蛮不错的,就想新的插件用下他的Editor来写,毕竟自己写Editor想功能足又好看确实花功夫。然后随便写一点小体会。(本文就写点体会,不具体讲细节了)

        第一个OdinEditorWindow父类,继承的是unity的EditorWindow,作者在里面加了自己的几个方法和事件,具体的可以在他的官方手册那看。

        http://sirenix.net/odininspector/documentation/sirenix/odininspector/editor/odineditorwindow

        文档中例如OnBegin/EndGUI、OnClose这几个事件感觉还是比较有用,比如有些操作我并不想立即执行,而是等用户关闭窗口后再执行,这样有些操作对用户透明也使一些体验更好一些。然后还有一些DropDown的东西,可以实现点击按钮后出现下拉选择框之类的效果(就是Quickly inspect objects这个例子里的一些效果)。然后关于Window里的元素里的效果,除了正常的用Editor里的GUI之类的元素来绘制,还可以通过GetTargets()这个函数来在Window里添加其他的东西(如 scriptable object, component等),这些东西里的绘制我们可以在编写时使用OdinAttribute来便捷的完成,Attribute在Window里同样是生效的,官方的例子里大都也是这样的组合,这样在Window和Inspector里都能有不错的效果了。

          第二个是OdinMenuTree,可以帮助快速构建一个自定义的窗口

http://sirenix.net/odininspector/documentation/sirenix/odininspector/editor/odinmenutree

         大概效果如下

Odin WindowEditor使用体会

        Odin会自动帮我们绘制搜索框,下拉菜单,需要用户做的就是指定添加的东西和下拉菜单的层级,下拉菜单的图标也可以自定义。指定添加的东西能有很多种,并且可以指定添加某一路径下的所有该类型文件,并且因为调用的方法为Add(string path, object instance),object类型意味着基本上都啥东西都能放进去(当然要放的是实例 instance),但是并不是什么都能如愿的自动Draw出来,比如我试过加入一个EditorWindow的实例,里面的OnGui()的元素都没有画出来,自动绘制的是定义成员和使用了Attribute的一些效果,如使用odin里的[Button("test")],那么也会绘制一个相关函数的按钮,我本来想查看作者自己写的一些例子的,结果很多都是在dll里的,因此也没有找到什么。然后他的这里面关键的tree的绘制也并没有留太多有用的接口,几乎无法在这个tree里再自定义绘制(我试了一些,效果不怎么好,当然也不排除本人技术问题),这就非常难受了。当然这个拿来绘制管理一些scriptable objects之类的东西效果还是很好的,比如小型工程里可以拿来做一些游戏物品的管理之类的,不必自己再去写Editor了。

           大概就是这些吧,我总结一下,odin的Editor拿来快速开发一些自己项目用的Editor还是很方便的,但是想实现大型插件那种比较好的视图功能效果的还是要靠自己慢慢写,odin在这里的表现不如odinAttribute那么惊艳。

          北京今天有点冷,还被拉到海淀公园去放了一下午风筝,晚上回来也不想学习也玩不动就随便写了点,没什么干货,还有哪里有错误请大家海涵(我自己也就算刚入门),欢迎大家指教。