Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/smidgens/unity-attributes

Inspector attributes for Unity
https://github.com/smidgens/unity-attributes

attributes not-affiliated-with-david-bowie smidgenomics unity unity-attributes unity-plugin

Last synced: 19 days ago
JSON representation

Inspector attributes for Unity

Awesome Lists containing this project

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;

```