# unity-attributes
**Repository Path**: ObjOne/unity-attributes
## Basic Information
- **Project Name**: unity-attributes
- **Description**: unity 轻量级 Inspector 属性扩展
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-17
- **Last Updated**: 2025-11-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ℹ️ Features
* Collection of general use drawer and decorator attributes.
* Stripped in production: `[Conditional("UNITY_EDITOR")]`
* 🤞 Reasonably lightweight.
# 📦 Install
1. Open Package Manager
2. Paste GitHub URL:\
`https://github.com/Smidgens/unity-attributes.git#`
# 🚀 Usage
### 🟢 Decorators
📝 BoxHeader
```cs
[BoxHeader("Example Header")]
[TextArea]
public string documentedField;
```
📝 BoxComment
```cs
[BoxComment("Some information about bla")]
[TextArea]
public string documentedField;
```
📝 BoxLink
```cs
[BoxLink("Documentation", "https://en.wikipedia.org/wiki/Slartibartfast")]
[TextArea]
public string documentedField;
```
🔳 StaticAction
```cs
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
```cs
[System.Serializable]
public struct T1
{
public string name;
public Texture2D icon;
}
[Inline]
public Vector3 inlinedVector;
[FieldSize("name", 40f)]
[Inline]
public T1 inlinedCustom;
```
📏 Expand
```cs
[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
```cs
[System.Serializable]
struct ToggleData
{
public bool v1,v2,v3;
}
[Tabs]
public ToggleData options;
```
```cs
[System.Flags]
enum Options
{
Item1 = 1,
Item2 = 2,
Item3 = 4,
}
[Tabs]
public Options options;
```
🔘 Switch
```cs
[Switch]
public bool switch1;
[Switch("Off", "On")]
public bool switch2;
[Switch("Disabled", "Enabled")]
public bool switch3;
```
```cs
[System.Flags]
enum Options
{
Item1 = 1,
Item2 = 2,
Item3 = 4,
}
[Switch]
public Options options;
```
🎚️ Slider
```cs
[Slider(1f,10f,1)]
public float sliderPrecision;
[Slider(1f,10f,0.5f)]
public float sliderStep;
[Slider(1,10)]
public int sliderInt;
```
🎚️ Slider01
```cs
[Slider01]
public float slider01;
```
🎨 HexColor
```cs
[HexColor]
public string hexColor = "#f00";
```
🔎 SearchType
```cs
[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__
```cs
[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
```cs
[Layer]
public int _layer;
```
🔻 SortLayer
```cs
[SortLayer]
public int _sortingLayer;
```
🔻 Tag
```cs
[Tag]
public string _tag;
```
🔻 BuildScene
```cs
[BuildScene]
public string scenePath;
[BuildScene]
public int sceneIndex;
```
🔻 AnimatorParameter
```cs
public Animator myAnimator;
[AnimatorParameter("myAnimator")]
public string parameterName;
[AnimatorParameter("myAnimator")]
public int parameterIndex;
```
🔻 RendererMaterial
```cs
public Renderer myRenderer;
[AnimatorParameter("myRenderer")]
public int materialIndex
```
🔻 BlendShape
```cs
public SkinnedMeshRenderer myRenderer;
[AnimatorParameter("myRenderer")]
public string blendShapeName
[AnimatorParameter("myRenderer")]
public int blendShapeIndex
```
### 🔵 Modifiers
🔳 FieldAction
```cs
[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
```cs
[Indent(1)]
[DefaultDrawer]
public int iAmIndented;
[Indent(2)]
[DefaultDrawer]
public int iAmMoreSo;
```