Odin
官网: https://odininspector.com/
文档: https://odininspector.com/tutorials
介绍
Odin 最大的作用就是让你很方便的直接在 Unity 中开发一些编辑工具,比如 技能编辑器
编辑完后保存成配置文件,供运行时使用,所以运行时一般只用到 OdinSerialize
还提供了一套校验流程,让你对编辑好的配置进行校验,快速发现问题而不用等到进入游戏才发现
主要包含3大模块(各自封装成dll):
-
Inspector扩展,包括
扩展Inspector窗口
扩展EditorWindow
因为 Inspector扩展 主要是编辑配置文件,加载/保存 配置文件经常会用到 扩展序列化
因此作者分成2个插件上架到 AssetStore
- Odin Inspector and Serializer
- Odin Validator
我们比较常用的是 Odin Inspector and Serializer
安装
unity必须先通过 PackageManager 安装 Unity.Mathematics
因为是收费插件,直接在 AssetStore 上购买即可
配置
-
版本管理需要忽略下面这个AOT自动生成的目录
/Assets/Plugins/Sirenix/Assemblies/AOT/* -
如果只想在编辑器模式下使用 Odin
菜单 Tools > Odin Inspector > Preferences > Editor Only Mode 点击开启编辑器模式 -
如果需要在运行时使用Odin,比如序列化配置, 则需要添加 link.xml 文件,防止代码被剪裁
<linker> <assembly fullname="Sirenix.OdinInspector.Attributes" preserve="all"/> <assembly fullname="Sirenix.Serialization.Config" preserve="all"/> <assembly fullname="Sirenix.Serialization" preserve="all"/> <assembly fullname="Sirenix.Utilities" preserve="all"/> <assembly fullname="Sirenix.Serialization.AOTGenerated" preserve="all" ignoreIfMissing="1"/> </linker>
对AOT的支持
由于AOT会裁剪不必要的类,对 Odin 有2个影响
- Odin 自身的类会被裁剪,可能通过 配置 解决
- 通过 Odin 序列化的类会被裁剪
- 菜单 Tools > Odin Inspector > Preferences > Serialization > AOT Generation
勾选 Auto Mate Before Builds , 这样会在打包前生成引用序列化类的代码,这样就不会被裁剪了 - 当然你也可以手动操作
在该界面点击 Scan Project 会自动扫描序列化类,
点击 Generate DLL 生成防止被裁剪的代码
你必须在每次打包前都运行一次,并且最好打包后删除生成的 dll,如果不删除dll,当你修改序列化类后,Unity 可能会报错
因为引用它的dll中的代码没有同步修改,删除dll后即可解决
- 菜单 Tools > Odin Inspector > Preferences > Serialization > AOT Generation