前言

今天我就是来吹爆这个Odin插件的!
解决了两个我使用Unity至今遇到过的两个让我深恶痛绝的槽点:

  • 麻烦的自定义编辑器
  • 序列化某些类型

由于这个插件价格还是比较贵的(Odin - Inspector and Serializer 商店页 现价$45),所以文末会提供一个早期版本的插件下载,如果觉得好请商店购买以支持开发者!

那一天,人类终于回想了起曾一度被Unity所支配的恐怖

Type[,]
Type[][]
List<List<Type>>
Dictionary<Type,Type>
...

这些都是游戏里很常用的数据类型,然而你!用!不!了!
要说强行序列化的办法是有的,Unity提供了自定义序列化的接口,但是麻烦得很,曾经我查了很多资料试图序列化Dictionary,最终结果依然无法让人满意,有很多问题。
也有别的解决途径,使用XML等文件形式来存储数据也是可以的,现在的项目里甚至使用了Excel文件(用以编辑地图)。
很想问为什么Unity发展了这么多年,还是不能原生支持这些类型的序列化。如果你Google一下,可以看到官方论坛里有很多这些关于序列化的问题。

在不借助插件的情况下,唯一可以简单实现的就是锯齿数组,以实现一个Int的锯齿数组为例:

public class DEMO : MonoBehaviour
{[System.Serializable]public class IntElement{public int Value;}[System.Serializable]public class Int2D{public IntElement[] Element;}public Int2D[] Data;
}

这样就可以获得一个类似锯齿数组的效果,也可以充当二维数组使用。当然,Unity会顺便送你一个屎一样的编辑器。

显然这个编辑器是没法用的,所以你就要写CustomEditor,然后你发现你花了半天写出来的编辑器虽然能用,但是扩展性糟糕,代码难读修改困难。唯一慰藉就是写成之后还稍稍有点成就感。

现在!你有了Odin!

导入插件后,编写代码:

using Sirenix.OdinInspector; //记得Using插件的名字空间public class DEMO : SerializedMonoBehaviour //要使用Odin的序列化功能需要改为从这个类型派生
{[BoxGroup("Data_A")]public int[,] Data_A = new int[3, 3];public int[][] Data_B = new int[3][];public List<List<int>> Data_C = new List<List<int>>();public Dictionary<string, int> Data_D = new Dictionary<string, int>();
}

然后...

就是这么快速、简单、无痛。

超强的编辑器扩展!

Unity自带了一些Attributes,比如[Header]、[Range]、[Multiline]、[Space]等,只能对Inspector进行一些简单的扩展和编辑。Odin除了序列化的功能,还包括了强大的编辑器扩展能力,新增了几十种Attributes!

以上是Odin自带的DEMO中的几个范例,如此复杂的编辑器界面仅仅是在属性上添加数个Attributes就实现了。

Odin插件已经运用在手头上的项目上了,根据几个月的使用经验,几乎不需要自己重写编辑器界面,仅靠Attributes的搭配使用就可以完成绝大部分编辑器界面需求了。当然Odin也提供了加强版的编辑器Drawer,如果Attributes不满足需求,自己重写编辑器也会比Unity原生简单许多。
另外提一点,Odin兼容各个平台,但是如果使用了自定义的序列化类型并且需要在PC以外的平台发布的话,需要Tool→Odin Inspector→Preferences→AOT Generation页面里生成一下DLL,否则会报错。

具体使用方法就不说了,参照插件自带的DEMO场景和Odin Inspector 文档就可以很容易学会使用了。

最后

Odin实在是太好用,用过之后感觉已经回不去了,现在开个项目第一件事就是导入Odin插件,毕竟之前因为这些问题而疯狂受苦。这里会提供一个旧版本的下载,这个版本可以稳定运行在最新的Unity2017.3,如果有条件请在Asset Store中支持开发者。

百度盘 pan.baidu.com/s/1pMZt3b9
密码 0zqx

16人点赞

Unity

作者:石膏
链接:https://www.jianshu.com/p/154ab336c38f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

【Odin插件】Unity补完计划相关推荐

  1. [TaskList] 省选前板子补完计划

    省选前本子补完计划 [ ] 带权并查集 [ ] 树上莫队 - UOJ58 [WC2013]糖果公园 loj2485「CEOI2017」Chase 转载于:https://www.cnblogs.com ...

  2. macos模拟器_苹果芯补完计划,iOS终将回归mac OS?

    在过去几年时间里,国内外有越来越多小道消息都在传苹果将为新款Mac改用定制设计的ARM处理器:<彭博社>曾报道,苹果可能于今年开始在 Mac 电脑上改用内部代号为Kalamata的自研处理 ...

  3. 【机器学习】补完计划

    机器学习补完计划 发现之前的帖子太长了,拆了整理一下,理一理以前的笔记,其实代码实现和数学推导更加有助于理解 PS:任天堂特邀嘉宾来举例子 波克基斯.玛狃拉,比卡超 四个主要任务 分类(classif ...

  4. Hrbust 2222 应援团补完计划【并查集+思维】好题~

    应援团补完计划 Time Limit: 3000 MS Memory Limit: 32768 K Total Submit: 9(5 users) Total Accepted: 3(3 users ...

  5. 紫书已经基本学完现在开启紫书题目补完计划!!!

    最迟2个月...把紫书所有的题目都补完从9月28到11月28号.把紫书的题目在本博客补完. 转载于:https://www.cnblogs.com/baccano-acmer/p/9716090.ht ...

  6. 算法补完计划(五) 二分图匹配

    二分图 如果一张图能被分为两部分,两部分之间存在边相连,而单个部分内的结点无边相连,那这张图叫做二分图 判断二分图 我们给图进行染色,从一个点开始染成红色,相邻点染蓝色,最后能全部染完,并且任意相邻点 ...

  7. NLP 开源形近字算法补完计划(完结篇)

    前言 所有的故事都有开始,也终将结束. 本文将作为 NLP 汉字相似度的完结篇,为该系列画上一个句号. 起-NLP 中文形近字相似度计算思路 承-中文形近字相似度算法实现,为汉字 NLP 尽一点绵薄之 ...

  8. [笔试补完计划]澜起科技2022数字验证笔试

    澜起科技2022数字验证笔试 时间2021.8.11 简答题(共11题) 1.[简答题]Please provide Linux shell command(s)to find all files w ...

  9. dex字符串解密_Androguard补完计划——锁定字符串解密函数

    一.理论基础(我们先讲道理) 上回说到我们找到了dex中的加密字符串 提取加密字符串. 观众老爷们问:那么找到这些加密字符串有什么作用呢?该看不懂的还是看不懂啊... 那么今天我就来告诉大家,找到的这 ...

最新文章

  1. 从AI、加密货币到火星任务,一种更强大、更稳定的存储设备
  2. plotly自定义股票数据绘图
  3. mysql查询是否用index_mysql – 为什么这个查询使用where而不是index?
  4. java 图片动画_java在窗口中添加图片做动画,怎么一闪一闪的?
  5. Linux优化不知如何下手?那你的看看这篇文章了
  6. 前端文件表单/ajax上传实例代码
  7. Linux按键输入实验(体验一下输入驱动,实际开发使用input子系统处理)
  8. 【CodeVS】p1174 靶形数独
  9. elasticsearch的javaAPI之index
  10. 深入浅出通信原理pdf_「PLC」精品资料包,西门子+三菱+AB+台达,50本高清PDF
  11. C#将图片转为二进制流
  12. 【爬虫知识】浏览器开发者工具使用技巧总结
  13. C专家编程 第1章 C:穿越时空的迷雾 1.4 KR C
  14. 用户运营4大策略体系搭建:增长框架+用户建模+场景化分层+数据运营
  15. 网易杭州研究院offer全过程(附加阿里巴巴笔经面经)
  16. 如何使用Unity制作一款自己喜欢玩的游戏demo(Unity萌新的进阶技巧)
  17. 【Swift 60秒】51 - Closures as parameters
  18. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式
  19. guava的String之Splitter
  20. 文科类文献综述怎么写?

热门文章

  1. 想做一个网站,需要学些什么?
  2. linux环境变量、交叉编译工具链gcc
  3. h5如何上传文件二进制流_前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输...
  4. 麒麟KY-RTI分布仿真技术:前言
  5. 在windows上用vscode打造比vc++6.0好用的C/C++ IDE,适用编程小白
  6. mysql 查询echar 折现数据
  7. wordpress(DUX主题)怎么给文章添加历史上的今天
  8. Linux下安装无线网卡驱动
  9. 疫情在家办公,正好趁老板不在搞搞副业,爽歪歪
  10. 定积分解题的一些特殊方法习题