# Unity attributes

> Use Unity-specific C# attributes to define special behavior for your code.

[Attributes](https://learn.microsoft.com/en-us/dotnet/csharp/advanced-topics/reflection-and-attributes/) in C# are metadata markers that can be placed above a class, property, or method declaration to indicate special behaviour.

There are many attributes defined in the .NET libraries and Unity also provides a number of custom, Unity-specific attributes. For example, you can add the `HideInInspector` attribute above a property declaration to prevent the Inspector from showing the property, even if it is public. Attributes are specified in square brackets above the declaration as follows:

```lang-cs
[HideInInspector]
public float strength;
```

For the full list of `UnityEngine` attributes, refer to the list under **UnityEngine > Attributes** in the Scripting API reference, which begins with [AddComponentMenu](/engine/6000.5/script-reference/unityengine/addcomponentmenu.md).

For the full list of `UnityEditor` attributes, refer to the list under **UnityEditor > Attributes** in the Scripting API reference, which begins with [AssetPostprocessorStaticVariableIgnoreAttribute](/engine/6000.5/script-reference/unityeditor/assetpostprocessorstaticvariableignoreattribute.md).

> **Note:**
>
> Do not use the .NET [ThreadStatic](http://msdn.microsoft.com/en-us/library/system.threadstaticattribute.aspx) attribute as this causes a crash if you add it to a Unity script.

## Additional resources

* [Unity Learn: attributes](https://learn.unity.com/tutorial/attributes#)
* [Inspecting scripts](/engine/6000.5/manual/scripting/get-started/inspecting-scripts.md)
* [Script serialization rules](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-serialization/rules.md)
