Odin Inspector Version 2.1.0

Making sure everyone on your team sets up your data correctly when working directly with assets is made easy using the live input validation features that Odin Inspector provides. However, sometimes, warning messages get ignored, assets get deleted, requirements change, and data is made obsolete as your project grows. Slowly bugs, errors, and faulty data creep in as work progresses. Manually going through your entire project to find and correct issues can quickly grow to be an insurmountable task.

Using the Odin Project Validator, you can easily scan your entire project for warnings and errors, and fix them inline right from the validator. The validator handles scene switching and saving as you work, letting you quickly and freely navigate between all issues with no hassle and no delay.

Learn more here

New tutorials, documentation and attribute overview

Our new website has brand new searchable tutorial, documentation and attribute overview sections - check them out and learn how you can get the most out of Odin already today!

Tutorials   Attribute Overview   Documentation

Community tools

Check out our new community tools page to see all the neat things people have built with Odin and made available to the community. Create an account to submit your own tools!

Learn more here

Please note: source code is now a separate pre-configured and easy-to-use package that you can download from our website, but the source code is no longer included in the core Odin Inspector package sold here and on the Asset Store.

Everyone who has purchased Odin Inspector before the 2.1 beta started (28.05.2019) will receive the source code and Odin Project Validator addons for FREE, starting now we will be selling the source code as a separate paid package.

New Odin Inspector 2.1 Features

Expressions

Start your string with an '@' sign, and write C# directly in your attribute declaration; this works in almost all attributes that take a string. This reduces boilerplate code and introduces countless new possibilities.

Learn more here

Interactive Attributes Overview Window

You no longer need to import the demo scene; all attribute examples are now available in a window: Tools > Odin Inspector > Attributes Overview

Also see our new online attributes overview

New AssetSelector attribute

A new, simpler alternative to the AssetList attribute, the AssetSelector attribute prepends a small button next to the object field that will present the user with a customizable hierarchical dropdown of selectable assets.

Learn more here

New ChildGameObjectsOnly attribute

Avoid having to manually locate the desired object in the hierarchy, while at the same time telling your designer how your component should be used!

Learn more here

New ShowGroupIf and HideGroupIf attributes

ShowGroupIf and HideGroupIf are attributes that allow for showing or hiding a group of properties based on a condition. They are group attributes and can therefore be combined with other group attributes using group paths, and even be used to show or hide entire groups.

See ShowGroupIf examples   See HideGroupIf examples

New validation backend

Before, Odin had separate drawers for attributes such as the Required, ValidateInput and AssetsOnly attributes. Now, all of these have been turned into standalone Validators, and are drawn in the inspector by a single drawer that integrates the new validation system.

This means that you can now easily define your own validators. Errors and warnings will then automatically show up in the inspector. Furthermore, the new validation system is completely separate from the drawer system. This means that you can manually invoke the new, straight-forward validation API from anywhere to integrate project validation in your own custom workflow and build pipelines.

You can make your own AttributeValidators and ValueValidators. Below is a simple example of how you could create a validator that would display an error in the inspector if a texture too large for your game is used.

[assembly: RegisterValidator(typeof(TextureSizeValidator<>))]

public class TextureSizeValidator<T> : ValueValidator<T>
  where T : Texture
{
  protected override void Validate(T value, ValidationResult result)
  {
    if (value && value.width > 1024 && value.height > 1024)
    {
      result.Message = "We're making a mobile game for crying out loud!";
      result.ResultType = ValidationResultType.Error;
    }
  }
}

Your custom validators will also be integrated in the new Odin Project Validator.

More examples and tutorials will be added soon.

Performance Improvements

  • Odin now triggers far fewer serialization calls per frame, vastly improving performance when inspecting data-heavy objects.

Additions

  • Added GUIHelper.PingObject which is a more featue rich version of Unity's PingObject.
  • Added GUIHelper.SelectObject.
  • Added IfAttributeHelper class which allows for easy implementations of If style attributes.
  • Added OdinMenuTree.Selection.SelectedValue and SelectedValues.
  • Odin Selectors now displays an infobox if the selector doesn't contain any items.
  • RectExtensions.AlignCenterXY(this Rect rect, float width, float height).

Changes

  • All If- attribute drawers now use the new IfAttributeHelper class, instead of relying on PropertyContext lookups.
  • Group attributes, specifically the base PropertyGroupAttribute no longer has the JetBrains.Annotations.MeansImplicitUse attribute.
  • Removed attributes overview card from the Getting Started window, and replaced it a button to open the Attributes Overview window.
  • Removed attributes overview scene.
  • Renamed TypeInfoBoxAttributePropertyProcessorProcessor to TypeInfoBoxPropertyProcessor because was running into errors due to long path length.
  • ValueDropdownAttributeDrawer no longer invokes the referenced member twice when getting the value.
  • Dragging a value on top of a closed list now appends the value to the end of the list instead of the front.

Fixes

  • Fixed an issue where the effect of the TypeFilter would in some cases not be cleared and hence applied to other properties.
  • Fixed a crash when using DeepReflection on const fields.
  • Fixed divide by zero exception in RectExtensions.SplitGrid.
  • Fixed issue in 2018.3 where changing a PreviewField with the Unity object picker would sometimes change other preview fields as well.
  • Fixed a typo in FolderPath attribute drawer.
  • If an enum has a None value with [HideInInspector] on it, a new None value will no longer be injected by EnumSelector<T>.
  • Odin's default property member selection logic in InspectorPropertyInfoUtility will now always ignore properties that have index parameters.
  • TypeExtensions.GetCastMethod now also searches parent types for valid methods.
  • TypeExtensions.GetOperatorMethod and TypeExtensions.GetOperatorMethods now also search parent classes for valid operators.