Odin 4.0.1 is now out of beta with the brand new Visual Designer!
It has been a long journey, but the Visual Designer is finally here.
This project is close to our hearts and is something we’ve wanted to realize for a long time.
The Visual Designer allows you to add attributes to any field in your inspectors, changing how they look and behave without writing any code or waiting for recompilation.
Changes are instant, allowing you to iterate quickly and stay focused on creating tools for your projects that save time.
We hope we’ve succeeded in creating a tool that helps you customize your inspectors even faster than you’re already used to with Odin, and we’re excited to finally put the power of Odin into the hands of non-coders as well.
If you’d like to explore what it can do, take a look at this overview, which highlights some of its most powerful features.
Or, if you’d rather jump right in and learn by doing, check out this getting started tutorial.
Patch Notes
Odin Inspector
Additions
Added the new Visual Designer allowing you to access Odin's power without writing code.
Added the Visual Designer Overview window, which allows you to view all designed types and inspect their corresponding OVDF files with syntax highlighting and a non-coder-friendly view. It also lists potential issues with the file, such as missing types and other general formatting problems. You can open it via Tools > Odin > Inspector > Designer Files Overview.
Added OdinCacheableProcessorAttribute to mark a processor as cacheable; caching is applied only when all processors for a property are cacheable.
Added a new breadcrumb section to the Visual Designer helping with navigating inheritance structures.
Added the ability to apply attributes to the type itself in the Visual Designer by right clicking it in the breadcrumb section and selecting Edit Attributes
Added a new button at the bottom of the Visual Designer to lock and unlock members that come from a parent type.
Added a Lock Inherited Members by Default option to the Visual Designer preferences, which automatically locks members inherited from parent types. It is enabled by default and can be overridden per user. You can access it via Tools > Odin > Inspector > Preferences > Visual Designer > Lock Inherited Members by Default.
The Visual Designer can now design types directly without requiring pre-existing instances, and it also supports abstract classes.
Additions made during the 4.0.0.1 Beta version.
Added a way to customize Element Types in the context menu of properties with the Visual Designer. The Edit Type button in the Visual Designer now provides the same functionality for collections.
Added 'LogLevelTypeMismatches' as an option to the Visual Designer config file: used for handling logging of found files that contain invalid types.
Additions made during the 4.0.0.0 Beta version.
Added an option to change the font size of message boxes in the general preferences.
Added ExcludeInOdinDesignerAttribute to exclude members or classes from the visual designer.
Added OdinDesignerBindingAttribute to handle property data binding for the visual designer.
Added Column Groups.
Changes
The Visual Designer now supports generic types.
The Visual Designer's auto save functionality has been improved to make sure that an autosave is not triggered during active input.
Changes made during the 4.0.0.0 Beta version.
The name parameter of the CustomContextMenuAttribute is now a resolved string.
Fixes
Fixed an issue where the Visual Designer’s Attribute Editor could edit inherited properties’ attributes via the context menu, even though the preference ‘Lock Inherited Members By Default’ was set to true.
Fixed an issue where properties excluded from the Visual Designer still received attribute changes.
Properties excluded from the Visual Designer no longer get context menu options added by the designer.
Attribute types that went missing after being edited in the Visual Designer are now ignored during serialization.
Missing members on attributes edited in the Visual Designer are now ignored during serialization.
The Visual Designer’s Attribute Editor no longer shows an example button for attributes that don’t have examples.
Fixed an issue where a member later marked as excluded from the Visual Designer could lose its position determined by its assigned Order if another item moved by the Visual Designer occupied the same index.
The Visual Designer no longer saves changes to attributes that existed previously but have since been removed from the type hierarchy; these changes are cleared on the next save for the type that modified them.
Fixed an issue where the Visual Designer incorrectly serialized a property as changed after its modifications were manually reverted.
Fixed an issue where removing an attribute previously added through the Visual Designer was incorrectly serialized as 'removed' instead of being removed from the list of changed attributes for the given property.
Fixed an issue where the Unit attribute on Long fields truncated internal double/decimal values rather than rounding to the nearest whole number.
Fixes made during the 4.0.0.1 Beta version.
Null Editors are now handled more gracefully by the Visual Designer.
Fixed an issue where the Visual Designer did not update an internal flag that determines whether an InspectorProperty is designed in the correct place in certain scenarios.
The Visual Designer no longer supports customizing types that Odin cannot create editors for.
Fixed an issue causing you to be unable to focus and edit a field.
Fixes made during the 4.0.0.0 Beta version.
Added Unity 6000.3 compatibility. Dozens of method signatures were changed in Unity 6000.3, so Odin's assembly distribution is now IL post processed to automatically use method shims when interacting with Unity methods that have different signatures in different versions of Unity (for example, "Vector3.op_Multiply(Vector3 a, Vector3 b)" vs "Vector3.op_Multiply(in Vector3 a, in Vector3 b)"), or where Unity types have moved assembly (for example, the UnityEngine.EventModifiers enum was moved from UnityEngine.IMGUIModule.dll to UnityEngine.CoreModule.dll). These shims either reimplement the Unity methods or dispatch them to the correct destination using emit. The source distribution of Odin is unaffected.
Fixed an issue where dictionary foldout keys could not be collapsed with certain key types.
Fixed an issue where using [LabelText(SomeIcon)] could lead to NullReferenceExceptions if the label was hidden.
Fixed an issue where TableLists would not respect SquareCells=true if they had 1 row and a set of specific parameters set.
Fixed an issue where TableLists would throw an exception if they only had 1 row and a set of specific parameters set.
Fixed an issue where the scene was marked as dirty again even if it was already dirty, causing EditorApplication.hierarchyChanged to be invoked on every change.
Resolved an issue that allowed a PropertyProcessor to add duplicate property names.
Fixed error in Tuanjie engine where the AssetSelector attribute drawer did not account for scenes also potentially using the ".scene" and not just the ".unity" extension.
Resolved an issue where the Label Text Drawer repeatedly allocated textures for the icon rather than doing so only once during initialization.
Fixed an issue where the PropertyTree initialized the RootProperty before it was necessary.
Odin Validator
Fixes
Fixed an issue where MaterialValidator could throw a null reference exception in certain Unity versions due to internal Unity API changes.
Odin Serializer
No changes were made to Odin Serializer in this version.