Unity [Attributes] to the rescue

Attributes are a true productivity booster. Here is a list of the handiest attributes in Unity. You ignore them at your peril.

Unity Attributes

There are many handy attributes built-in by Unity.

A complete list of all Unity attributes

There is a complete list of all Unity attributes on GitHub created by user teebarjunk. The list includes a short description for each attribute and a link to the Unity manual (if the attribute is documented).

There also is a class that lists all attributes: AttributeExplorer.
I have let it run in Unity 2023 and here is the result:

Microsoft.CodeAnalysis.EmbeddedAttribute
System.Runtime.CompilerServices.IsUnmanagedAttribute
UnityEngine.SharedBetweenAnimatorsAttribute
UnityEngine.Animations.DiscreteEvaluationAttribute
UnityEngine.Animations.NotKeyableAttribute
Microsoft.CodeAnalysis.EmbeddedAttribute
System.Runtime.CompilerServices.IsUnmanagedAttribute
AOT.MonoPInvokeCallbackAttribute
UnityEngineInternal.TypeInferenceRuleAttribute
Unity.Jobs.LowLevel.Unsafe.JobProducerTypeAttribute
Unity.IL2CPP.CompilerServices.Il2CppEagerStaticClassConstructionAttribute
Unity.Profiling.IgnoredByDeepProfilerAttribute
Unity.Collections.ReadOnlyAttribute
Unity.Collections.WriteOnlyAttribute
Unity.Collections.DeallocateOnJobCompletionAttribute
Unity.Collections.NativeFixedLengthAttribute
Unity.Collections.NativeMatchesParallelForLengthAttribute
Unity.Collections.NativeDisableParallelForRestrictionAttribute
Unity.Collections.LowLevel.Unsafe.NativeContainerAttribute
Unity.Collections.LowLevel.Unsafe.NativeContainerIsReadOnlyAttribute
Unity.Collections.LowLevel.Unsafe.NativeContainerIsAtomicWriteOnlyAttribute
Unity.Collections.LowLevel.Unsafe.NativeContainerSupportsMinMaxWriteRestrictionAttribute
Unity.Collections.LowLevel.Unsafe.NativeContainerSupportsDeallocateOnJobCompletionAttribute
Unity.Collections.LowLevel.Unsafe.NativeContainerSupportsDeferredConvertListToArray
Unity.Collections.LowLevel.Unsafe.NativeSetThreadIndexAttribute
Unity.Collections.LowLevel.Unsafe.NativeContainerNeedsThreadIndexAttribute
Unity.Collections.LowLevel.Unsafe.WriteAccessRequiredAttribute
Unity.Collections.LowLevel.Unsafe.NativeDisableUnsafePtrRestrictionAttribute
Unity.Collections.LowLevel.Unsafe.NativeDisableContainerSafetyRestrictionAttribute
Unity.Collections.LowLevel.Unsafe.NativeSetClassTypeToNullOnScheduleAttribute
Unity.Burst.BurstAuthorizedExternalMethodAttribute
Unity.Burst.BurstDiscardAttribute
UnityEngine.BeforeRenderOrderAttribute
UnityEngine.ImageEffectTransformsToLDR
UnityEngine.ImageEffectAllowedInSceneView
UnityEngine.ImageEffectOpaque
UnityEngine.ImageEffectAfterScale
UnityEngine.ImageEffectUsesCommandBuffer
UnityEngine.RPC
UnityEngine.PropertyAttribute
UnityEngine.ContextMenuItemAttribute
UnityEngine.InspectorNameAttribute
UnityEngine.TooltipAttribute
UnityEngine.SpaceAttribute
UnityEngine.HeaderAttribute
UnityEngine.RangeAttribute
UnityEngine.MinAttribute
UnityEngine.MultilineAttribute
UnityEngine.TextAreaAttribute
UnityEngine.ColorUsageAttribute
UnityEngine.GradientUsageAttribute
UnityEngine.DelayedAttribute
UnityEngine.NonReorderableAttribute
UnityEngine.IconAttribute
UnityEngine.DisallowMultipleComponent
UnityEngine.RequireComponent
UnityEngine.AddComponentMenu
UnityEngine.CreateAssetMenuAttribute
UnityEngine.ContextMenu
UnityEngine.ExecuteInEditMode
UnityEngine.ExecuteAlways
UnityEngine.HideInInspector
UnityEngine.HideInCallstackAttribute
UnityEngine.HelpURLAttribute
UnityEngine.DefaultExecutionOrder
UnityEngine.AssemblyIsEditorAssembly
UnityEngine.ExcludeFromPresetAttribute
UnityEngine.ExcludeFromObjectFactoryAttribute
UnityEngine.ExtensionOfNativeClassAttribute
UnityEngine.InspectorOrderAttribute
UnityEngine.RuntimeInitializeOnLoadMethodAttribute
UnityEngine.SelectionBaseAttribute
UnityEngine.UnityAPICompatibilityVersionAttribute
UnityEngine.SerializeField
UnityEngine.SerializeReference
UnityEngine.PreferBinarySerialization
UnityEngine.Serialization.FormerlySerializedAsAttribute
UnityEngine.Search.SearchContextAttribute
UnityEngine.SearchService.ObjectSelectorHandlerWithLabelsAttribute
UnityEngine.SearchService.ObjectSelectorHandlerWithTagsAttribute
UnityEngine.Scripting.AlwaysLinkAssemblyAttribute
UnityEngine.Scripting.PreserveAttribute
UnityEngine.Scripting.RequireAttributeUsagesAttribute
UnityEngine.Scripting.RequireDerivedAttribute
UnityEngine.Scripting.RequiredInterfaceAttribute
UnityEngine.Scripting.RequiredMemberAttribute
UnityEngine.Scripting.RequireImplementorsAttribute
UnityEngine.Scripting.APIUpdating.MovedFromAttribute
UnityEngine.Lumin.UsesLuminPlatformLevelAttribute
UnityEngine.Lumin.UsesLuminPrivilegeAttribute
UnityEngine.Rendering.SupportedOnRenderPipelineAttribute
UnityEngine.TestTools.ExcludeFromCoverageAttribute
UnityEngine.Internal.DefaultValueAttribute
UnityEngine.Internal.ExcludeFromDocsAttribute
UnityEngine.GUITargetAttribute
Unity.Properties.GeneratePropertyBagsForAssemblyAttribute
Unity.Properties.CreatePropertyAttribute
Unity.Properties.DontCreatePropertyAttribute
Unity.Properties.GeneratePropertyBagsForTypesQualifiedWithAttribute
Unity.Properties.GeneratePropertyBagsForTypeAttribute
Unity.Properties.GeneratePropertyBagAttribute
Unity.Properties.Internal.ReflectedPropertyBagAttribute
UnityEngine.AssetFileNameExtensionAttribute
UnityEngine.ThreadAndSerializationSafeAttribute
UnityEngine.IL2CPPStructAlignmentAttribute
UnityEngine.WritableAttribute
UnityEngine.RejectDragAndDropMaterial
UnityEngine.UnityEngineModuleAssembly
UnityEngine.NativeClassAttribute
UnityEngine.Bindings.VisibleToOtherModulesAttribute
UnityEngine.Bindings.NativeConditionalAttribute
UnityEngine.Bindings.NativeHeaderAttribute
UnityEngine.Bindings.NativeNameAttribute
UnityEngine.Bindings.NativeWritableSelfAttribute
UnityEngine.Bindings.NativeMethodAttribute
UnityEngine.Bindings.NativePropertyAttribute
UnityEngine.Bindings.NativeAsStructAttribute
UnityEngine.Bindings.NativeTypeAttribute
UnityEngine.Bindings.NotNullAttribute
UnityEngine.Bindings.UnityTypeAttribute
UnityEngine.Bindings.UnmarshalledAttribute
UnityEngine.Bindings.FreeFunctionAttribute
UnityEngine.Bindings.ThreadSafeAttribute
UnityEngine.Bindings.StaticAccessorAttribute
UnityEngine.Bindings.NativeThrowsAttribute
UnityEngine.Bindings.IgnoreAttribute
UnityEngine.Bindings.MarshalUnityObjectAs
UnityEngine.Bindings.PreventExecutionInStateAttribute
UnityEngine.Bindings.PreventReadOnlyInstanceModificationAttribute
UnityEngine.Scripting.UsedByNativeCodeAttribute
UnityEngine.Scripting.RequiredByNativeCodeAttribute
UnityEngine.CustomGridBrushAttribute
Microsoft.CodeAnalysis.EmbeddedAttribute
System.Runtime.CompilerServices.IsUnmanagedAttribute
UnityEngine.UIElements.EventInterestAttribute
UnityEngine.UIElements.EventCategoryAttribute
Microsoft.CodeAnalysis.EmbeddedAttribute
System.Runtime.CompilerServices.IsUnmanagedAttribute
TreeEditor.TreeAttribute
Unity.Profiling.Editor.ProfilerModuleMetadataAttribute
UnityEditor.AnimationWindowControllerAttribute
UnityEditor.RequiredSignatureAttribute
UnityEditor.CallbackOrderAttribute
UnityEditor.PostProcessAttribute
UnityEditor.CommandHandlerAttribute
UnityEditor.DeclareDataModeSupportAttribute
UnityEditor.DrawGizmo
UnityEditor.DynamicHintGeneratorAttribute
UnityEditor.InitializeOnLoadAttribute
UnityEditor.InitializeOnLoadMethodAttribute
UnityEditor.InitializeOnEnterPlayModeAttribute
UnityEditor.EditorGUI+GUIContents+IconName
UnityEditor.EditorHeaderItemAttribute
UnityEditor.EditorWindowTitleAttribute
UnityEditor.CustomEditor
UnityEditor.CustomPreviewAttribute
UnityEditor.CustomEditorForRenderPipelineAttribute
UnityEditor.CanEditMultipleObjects
UnityEditor.CachePropertyAttribute
UnityEditor.RootEditorAttribute
UnityEditor.ShaderIncludePathAttribute
UnityEditor.MenuItem
UnityEditor.PreferenceItem
UnityEditor.LightingExplorerExtensionAttribute
UnityEditor.FilePathAttribute
UnityEditor.LibraryFolderPathAttribute
UnityEditor.CustomPropertyDrawer
UnityEditor.SettingsProviderAttribute
UnityEditor.SettingsProviderGroupAttribute
UnityEditor.WindowActionAttribute
UnityEditor.LocalizationAttribute
UnityEditor.MPE.RoleProviderAttribute
UnityEditor.ShortcutManagement.FormerlyPrefKeyAsAttribute
UnityEditor.ShortcutManagement.PriorityContextAttribute
UnityEditor.ShortcutManagement.ReserveModifiersAttribute
UnityEditor.ShortcutManagement.ShortcutBaseAttribute
UnityEditor.ShortcutManagement.ShortcutAttribute
UnityEditor.ShortcutManagement.ClutchShortcutAttribute
UnityEditor.ShortcutManagement.GameViewShortcutAttribute
UnityEditor.ShaderFoundry.FoundryAPIAttribute
UnityEditor.Localization.Editor.LocalizationAttribute
UnityEditor.VersionControl.VersionControlAttribute
UnityEditor.ShaderKeywordFilter.FilterAttribute
UnityEditor.ShaderKeywordFilter.SelectIfAttribute
UnityEditor.ShaderKeywordFilter.RemoveIfAttribute
UnityEditor.ShaderKeywordFilter.SelectOrRemoveAttribute
UnityEditor.ShaderKeywordFilter.SelectIfNotAttribute
UnityEditor.ShaderKeywordFilter.RemoveIfNotAttribute
UnityEditor.ShaderKeywordFilter.RemoveOrSelectAttribute
UnityEditor.ShaderKeywordFilter.TagConstraintAttribute
UnityEditor.ShaderKeywordFilter.ApplyRulesIfTagsEqualAttribute
UnityEditor.ShaderKeywordFilter.ApplyRulesIfTagsNotEqualAttribute
UnityEditor.ShaderKeywordFilter.GraphicsAPIConstraintAttribute
UnityEditor.ShaderKeywordFilter.ApplyRulesIfGraphicsAPIAttribute
UnityEditor.ShaderKeywordFilter.ApplyRulesIfNotGraphicsAPIAttribute
UnityEditor.SearchService.AdvancedObjectSelectorAttribute
UnityEditor.SearchService.AdvancedObjectSelectorValidatorAttribute
UnityEditor.SearchService.ObjectSelectorHandlerAttribute
UnityEditor.SearchService.ObjectSelectorEngineAttribute
UnityEditor.SearchService.ProjectSearchEngineAttribute
UnityEditor.SearchService.SceneSearchEngineAttribute
UnityEditor.Overlays.OverlayAttribute
UnityEditor.EditorTools.ToolAttribute
UnityEditor.EditorTools.EditorToolAttribute
UnityEditor.EditorTools.EditorToolContextAttribute
UnityEditor.Toolbars.EditorToolbarElementAttribute
UnityEditor.Rendering.ScriptableRenderPipelineExtensionAttribute
UnityEditor.Callbacks.RegisterPluginsAttribute
UnityEditor.Callbacks.PostProcessBuildAttribute
UnityEditor.Callbacks.PostProcessSceneAttribute
UnityEditor.Callbacks.DidReloadScripts
UnityEditor.Callbacks.OnOpenAssetAttribute
UnityEditor.Callbacks.RunAfterClassAttribute
UnityEditor.Callbacks.RunBeforeClassAttribute
UnityEditor.Callbacks.RunAfterAssemblyAttribute
UnityEditor.Callbacks.RunBeforeAssemblyAttribute
UnityEditor.Callbacks.RunAfterPackageAttribute
UnityEditor.Callbacks.RunBeforePackageAttribute
UnityEditor.Build.BuildCallbackVersionAttribute
UnityEditor.AssetImporters.CollectImportedDependenciesAttribute
UnityEditor.AssetImporters.ScriptedImporterAttribute
Unity.GraphToolsFoundation.Editor.InspectorUsePropertyAttribute
Unity.GraphToolsFoundation.Editor.InspectorUseSetterMethodAttribute
Unity.GraphToolsFoundation.Editor.ModelSettingAttribute
Unity.GraphToolsFoundation.Editor.NodeOptionAttribute
Unity.GraphToolsFoundation.Editor.LibraryHelpAttribute
Unity.GraphToolsFoundation.Editor.LibraryItemAttribute
Unity.GraphToolsFoundation.Editor.GraphElementsExtensionMethodsCacheAttribute
Unity.GraphToolsFoundation.Editor.InspectorFieldOrderAttribute
Unity.GraphToolsFoundation.Editor.ToolShortcutEventAttribute
Unity.GraphToolsFoundation.Editor.ModelInspectorCreateSectionMethodsCacheAttribute
UnityEditor.Experimental.GraphView.TypeAdapter
UnityEditor.Search.CustomObjectIndexerAttribute
UnityEditor.Search.PropertyDatabaseSerializerAttribute
UnityEditor.Search.PropertyDatabaseDeserializerAttribute
UnityEditor.Search.QueryListBlockAttribute
UnityEditor.Search.EnumerableCreatorAttribute
UnityEditor.Search.QueryEngineFilterAttribute
UnityEditor.Search.QueryEngineParameterTransformerAttribute
UnityEditor.Search.SearchExpressionEvaluatorAttribute
UnityEditor.Search.SearchExpressionEvaluatorSignatureOverloadAttribute
UnityEditor.Search.SearchExpressionParserAttribute
UnityEditor.Search.SearchTemplateAttribute
UnityEditor.Search.SearchItemProviderAttribute
UnityEditor.Search.SearchActionsProviderAttribute
UnityEditor.Search.SearchColumnProviderAttribute
UnityEditor.Search.SearchSelectorAttribute
UnityEditor.Search.SearchPropositionsProviderAttribute
UnityEditor.Search.Providers.SceneQueryEngineFilterAttribute
UnityEditor.Search.Providers.SceneQueryEngineParameterTransformerAttribute
UnityEditor.UIElements.UxmlNamespacePrefixAttribute
UnityEditor.TestTools.TestPlayerBuildModifierAttribute
UnityEditor.TestTools.RequireApiProfileAttribute
UnityEditor.TestTools.RequirePlatformSupportAttribute
UnityEditor.TestTools.AssetPipelineIgnore+IgnoreInV1
UnityEditor.TestTools.AssetPipelineIgnore+IgnoreInV2
UnityEditor.TestTools.AssetPipelineIgnore+AssetPipelineIgnoreAttribute
UnityEngine.TestRunner.TestRunCallbackAttribute
UnityEngine.TestTools.ConditionalIgnoreAttribute
UnityEngine.TestTools.TestMustExpectAllLogsAttribute
UnityEngine.TestTools.UnityPlatformAttribute
UnityEngine.TestTools.UnitySetUpAttribute
UnityEngine.TestTools.UnityTearDownAttribute
UnityEngine.TestTools.UnityTestAttribute
UnityEngine.TestTools.PostBuildCleanupAttribute
UnityEngine.TestTools.PrebuildSetupAttribute

Community created Attributes

The community has created some very handy attributes too. You should definitely check them out. All of these have been tested in Unity 2023 and do work without any errors.

Easy Buttons (FOSS)

One of the most valuable things is just to add a button to the inspector to call a method. Why this is not a default Attribute in Unity is beyond me.

Link: https://github.com/madsbangh/EasyButtons
License: MIT

using EasyButtons;

public class ButtonsExample : MonoBehaviour
{
    [Button("Say Hi!")]
    public void SayHiThere()
    {
        Debug.Log("Hi there!");
    }
}

Naughty Attributes (FOSS)

Like Easy Buttons, it also has a Button attribute but wait, there is more, much more. The GitHub page has a nice list of animated gifs for you to explore.

Link: https://github.com/dbrizov/NaughtyAttributes
License: MIT

using UnityEngine;
using NaughtyAttributes;

public class NaughtyExample : MonoBehaviour
{
	[MinMaxSlider(0.0f, 100.0f)]
	public Vector2 minMaxSlider;

	[ProgressBar("Health", 300, EColor.Red)]
	public int health = 250;

	[ProgressBar("Mana", 100, EColor.Blue)]
	public int mana = 25;

	[Scene]
	public string bootScene;

	[ShowNonSerializedField]
	private int myInt = 10;
}

Markup Attributes (FOSS)

If you need a quick way of grouping and formatting your inspector then this is the right tool for you.

Caveat: You have to create a custom inspector class to be able to use them. Otherwise, they will do nothing. But hey, you would have to create that calss anyways if you were to make your own inspector.

Link: https://github.com/gasgiant/Markup-Attributes
License: MIT

using UnityEngine;
using MarkupAttributes;

#if UNITY_EDITOR
using UnityEditor;
using MarkupAttributes.Editor;
#endif

public class MarkupExample : MonoBehaviour
{
    [TabScope("Tab Scope", "Left|Middle|Right", box: true)]
    [Tab("./Left")]
    public int one;
    public int two;
    public int three;

    [Tab("../Middle")]
    public int four;
    public int five;
    public int six;

    [Tab("../Right")]
    public int seven;
    public int eight;
    public int nine;
}

#if UNITY_EDITOR
[CustomEditor(typeof(MarkupExample)), CanEditMultipleObjects]
internal class MarkupExampleEditor : MarkedUpEditor
{
}
#endif

Odin Inspector (PAID)

Disclosure: This text may contain affiliate links, which means we may receive a commission if you click a link and purchase something that we have recommended. While clicking these links won't cost you any money, they will help fund this project! The links are created by Unity and Partnerize (Unity's affiliate partner).

Odin is the one-size fits all solution. Unlike the other projects, it is neither free nor open source but if you get it you won't regret it. Though, if all you need is a quick button for testing then this may be overkill.

Link: https://assetstore.unity.com/packages/tools/utilities/odin-inspector-and-serializer-89041?aid=1100lqC54&pubref=gamedevthings
License: Proprietary

Asset Recommendations

I hope you liked this article. Here are some related assets that may be useful to you. If you get one of them then some of the money will go towards funding this project. Thank you.

Disclosure: This text may contain affiliate links, which means we may receive a commission if you click a link and purchase something that we have recommended. While clicking these links won't cost you any money, they will help fund this project! The links are created by Unity and Partnerize (Unity's affiliate partner).