Odin has a dedicated attribute overview with examples

HideReferenceObjectPickerAttribute class

Namespace: Sirenix.OdinInspector
Assembly: Sirenix.OdinInspector.Attributes
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Parameter | AttributeTargets.Delegate | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter | AttributeTargets.All, AllowMultiple = false, Inherited = true)]
public class HideReferenceObjectPickerAttribute : Attribute, _Attribute
Hides the polymorphic object-picker shown above the properties of non-Unity serialized reference types.
  • System.Object
  • System.Attribute
  • HideReferenceObjectPickerAttribute

When the object picker is hidden, you can right click and set the instance to null, in order to set a new value. If you don't want this behavior, you can use attribute to ensure people can't change the value.

public class MyComponent : SerializedMonoBehaviour
    [Header("Hidden Object Pickers")]
    public MyCustomReferenceType OdinSerializedProperty1;

    public MyCustomReferenceType OdinSerializedProperty2;

    [Header("Shown Object Pickers")]
    public MyCustomReferenceType OdinSerializedProperty3;

    public MyCustomReferenceType OdinSerializedProperty4;

    public class MyCustomReferenceType
        public int A;
        public int B;
        public int C;


public HideReferenceObjectPickerAttribute()