Odin Inspector Version


  • Added a new InlineEditor attribute which displays an editor for any Unity object inline in the inspector. Check it out in the attributes overview demo scene.
  • Added support for Unity 5.6


  • Added a Bounds drawer for drawing Unity's Bounds struct
  • Added better feedback for when a user declares invalid [OnInspectorGUI] and [Button] methods.
  • Added ShowDrawerChain attribute to help debugging which drawers are being used for any given property, and in what order each property is called.
  • Added GUIStyle drawer


  • GuessIfUnityWillSerialize now always returns true for Unity object types, even if they're abstract.
  • Button methods can now have a return type without causing invalid IL exceptions.
  • When multiple objects in the hierarchy are selected, and you are adding a new instance to an Odin serialized list, it will now give each selected list a unique instance of an object, instead of the same reference.
  • When lists are serialized by Unity, Odin will no longer present the user with the instance creator that has support for polymorphism. Instead the only viable type is created automatically by inserting a null value. Since Unity doesn't support null, Unity will automatically create the correct instance.
  • Fixed a rare case where SlideRects lost the ability to gain focus.
  • It no longer breaks the inspector when errors occur in methods referenced from attributes.
  • Fixed an issue where the paste context menu item was disabled when it shouldn't be.
  • Fixed various small layout issues, where some fields would have a 4px offset.
  • The DisplayAsString attribute now works for list-elements as well.
  • Removed the "Not Serialized" label from the instance creator window since Odin by default serializes everything regardless of the System.Serializable attribute.
  • Property methods that are overridden and need to have aliases created are now handled correctly and in a far more solid way. Note that aliases are explicitly not created for abstract or virtual methods which have override implementations in derived types.
  • SerializedBehaviour now derives from Behaviour instead of MonoBehaviour, as intended.
  • Fixed potential infinite loop during deserialization. Deserialization should now be far more resistant to breaking in this way, due to the changes made.
  • Fixed rare case where there would be a serialization layout data mismatch.
  • Serialization logging and error handling settings are now actually used.
  • Corrected reflection name lookups for internal Unity members whose names have changed in 5.6.
  • Added support for Unity custom PropertyDrawers to draw generic type definitions, so we can draw Unity's new ExposedReferencePropertyDrawer in 5.6.
  • ExitGUIExceptions are now also rethrown when they are an exception's inner exception.
  • Fixed compiler warnings in source code.
  • Fixed an issue where a (recoverable) data layout mismatch would rarely occur when skipping complex data structures with no metadata.
  • ObjectFields now handles special "Unity null" cases.
  • PropertyValueEntry.GetValueOverride() now correctly identifies destroyed Unity objects as a NullReference.
  • Fixed a bug where NullableReferenceDrawer would draw the special object-picker if a Unity object was serialized with Odin.


  • Applying the [OdinSerialize] attribute to any field now forces Odin to serialize the value, regardless of whether Unity will also serialize the value.
  • Demo folder was moved from Plugins/Sirenix/Odin Inspector to Plugins/Sirenix/Demos/Odin Inspector
  • The list drawer has gotten new, prettier icons.
  • Made SerializedStateMachineBehaviour abstract.
  • UnityVersion.cs is now statically initialized at editor load, to ensure it is not initialized later at an illegal time.
  • Renamed IsUnityNull to SafeIsUnityNull
  • Updated the demo scene