Attributes
A collection of editor-only helper attributes that streamline inspector workflows in Unity. Includes decorators for headers, comments, and documentation links, plus drawer attributes for common use cases. Automatically stripped from production builds for zero runtime overhead.
com.smidgenomics.unity-attributes 
Install via UPM
Add to Unity Package Manager using this URL
https://www.pkglnk.dev/unity-attributes.git README Markdown
Copy this to your project's README.md
## Installation
Add **Attributes** to your Unity project via Package Manager:
1. Open **Window > Package Manager**
2. Click **+** > **Add package from git URL**
3. Enter:
```
https://www.pkglnk.dev/unity-attributes.git
```
[](https://www.pkglnk.dev/pkg/unity-attributes)README
âšī¸ Features
- Collection of general use drawer and decorator attributes.
- Stripped in production:
[Conditional("UNITY_EDITOR")] - đ¤ Reasonably lightweight.
đĻ Install
- Open Package Manager
- Paste GitHub URL:
https://github.com/Smidgens/unity-attributes.git#<version_tag>
đ Usage
đĸ Decorators
đ BoxHeader
[BoxHeader("Example Header")]
[TextArea]
public string documentedField;
đ BoxComment
[BoxComment("Some information about bla")]
[TextArea]
public string documentedField;
đ BoxLink
[BoxLink("Documentation", "https://en.wikipedia.org/wiki/Slartibartfast")]
[TextArea]
public string documentedField;
đŗ StaticAction
class StaticGreets
{
public static void SayHi()
{
Debug.Log("Hello, wurst!");
}
public static void LogValue(int v)
{
Debug.Log("Your value is: " + v);
}
}
[StaticAction("Say Hi", "SayHi", typeof(StaticGreets))]
[StaticAction("Log 10", "LogValue", typeof(StaticGreets), 10)]
public string staticActionField;
đ Property Drawers
đ Inline
[System.Serializable]
public struct T1
{
public string name;
public Texture2D icon;
}
[Inline]
public Vector3 inlinedVector;
[FieldSize("name", 40f)]
[Inline]
public T1 inlinedCustom;
đ Expand
[Serializable]
public struct T1
{
public string name;
public Texture2D icon;
}
[Serializable]
public struct T2
{
public int someValue;
public T1 nested;
}
[Expand]
public T1 expanded1;
[Expand]
public T2 expanded2;
đ Tabs
[System.Serializable]
struct ToggleData
{
public bool v1,v2,v3;
}
[Tabs]
public ToggleData options;
[System.Flags]
enum Options
{
Item1 = 1,
Item2 = 2,
Item3 = 4,
}
[Tabs]
public Options options;
đ Switch
[Switch]
public bool switch1;
[Switch("Off", "On")]
public bool switch2;
[Switch("Disabled", "Enabled")]
public bool switch3;
[System.Flags]
enum Options
{
Item1 = 1,
Item2 = 2,
Item3 = 4,
}
[Switch]
public Options options;
đī¸ Slider
[Slider(1f,10f,1)]
public float sliderPrecision;
[Slider(1f,10f,0.5f)]
public float sliderStep;
[Slider(1,10)]
public int sliderInt;
đī¸ Slider01
[Slider01]
public float slider01;
đ¨ HexColor
[HexColor]
public string hexColor = "#f00";
đ SearchType
[SearchType]
public string anyType;
// only show component types
[SearchType(baseTypes = new Type[]{ typeof(Component) })]
public string componentType;
// only show static classes
[SearchType(onlyStatic = true)]
public string staticType;
// only show system types
[SearchType(assemblies = new string[]{ "mscorlib" })]
public string systemType;
đģ Dropdown__
[DropdownString("option1", "option2")]
public string _string;
[DropdownFloat(0.5f, 1.2f, 2.4f)]
public float _float;
[DropdownColor("red", "blue", "cyan")]
public Color _color;
[DropdownBool("Off", "On")]
public bool _bool;
[DropdownInt(0, 10)]
public int _int;
[DropdownAsset("Assets/Demo/")]
public Texture2D _texture;
đģ Layer
[Layer]
public int _layer;
đģ SortLayer
[SortLayer]
public int _sortingLayer;
đģ Tag
[Tag]
public string _tag;
đģ BuildScene
[BuildScene]
public string scenePath;
[BuildScene]
public int sceneIndex;
đģ AnimatorParameter
public Animator myAnimator;
[AnimatorParameter("myAnimator")]
public string parameterName;
[AnimatorParameter("myAnimator")]
public int parameterIndex;
đģ RendererMaterial
public Renderer myRenderer;
[AnimatorParameter("myRenderer")]
public int materialIndex
đģ BlendShape
public SkinnedMeshRenderer myRenderer;
[AnimatorParameter("myRenderer")]
public string blendShapeName
[AnimatorParameter("myRenderer")]
public int blendShapeIndex
đĩ Modifiers
đŗ FieldAction
[System.Serializable]
internal class OwnerOfFunctions
{
public int myValue = 10;
public void SetMyValue(int v)
{
myValue = v;
}
public void CallMe()
{
Debug.Log("Yay!");
}
public void CallMeAsWell()
{
Debug.Log("OMG YAY");
}
}
class MyScript : MonoBehaviour
{
[FieldAction("Action 1", "CallMe")]
[FieldAction("Action 2", "CallMeAsWell")]
[FieldAction("Set value: 100", "SetMyValue", 100, onlyPlayMode = true)]
[FieldAction("Call Target", "ScriptMethod", callRoot = true)]
[Expand]
public OwnerOfFunctions fieldWithActions;
private void ScriptMethod()
{
Debug.Log("Script method called!");
}
}
đ Indent
[Indent(1)]
[DefaultDrawer]
public int iAmIndented;
[Indent(2)]
[DefaultDrawer]
public int iAmMoreSo;
No comments yet. Be the first!