Unity Editor自定义枚举下拉框

之前使用的时候就想吐槽了,Unity编辑器自带的Enum popup非常不好用,不支持搜索和鼠标滚轮,当枚举超过一定数量后非常难用。最近策划反馈说太难用了,希望优化下,正好借此机会研究。

解决方案1——Odin的ValueDropdown

用Odin的ValueDropdown,可以直接解决,但我十分抵制。

原因:

  1.只是解决了使用问题,但具体实现没代码可看,本身是抱着学习的目的来的。而且Odin收费。

  2.Odin的Attribute,如果用在有重写编辑器面板时就无效了,除非重写的Editor是继承Odin特定的类才行,这点非常恶心,前面可能已经实现了很多功能的自定义Editor都要改,照理Odin完全能自定义PropertyDrawer来实现功能的,暂时从代码层面上看不到有啥非这样做的理由。

解决方案2——自己实现

现在网上搜索了下,最后终于找到了一个大神写的自定义枚举下拉框,原理就是自定义PropertyDrawer+自定义EditorWindow来实现的,但缺的就是该如何实现啊!拉下来实际测试了下,功能都满足了,但列表定位有问题,IMGUI的ScrollView要知道Rect大小才能计算出滚动位置,并没有提供接口直接定位到某个Item,当然要在IMGUI实现这个功能也是可以的,但用UI ToolKit直接提供了ListView的定位方法,而且用UI ToolKit的话,也不用管编辑器皮肤、图标这些乱七八糟的问题。

最后参照着自己重新用UI ToolKit实现了一遍,并改进了一些小问题,具体可以看代码里的注释。

 

代码地址:https://github.com/Will-Zhu-27/UnityEditorCustomEnumDropdown

 

 
posted @ 2025-06-10 01:26  落星无尘_Will  阅读(105)  评论(0)    收藏  举报