Unclaimed Package Is this your package? Claim it to unlock full analytics and manage your listing.
Claim This Package

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

Style
Preview
pkglnk installs badge
## 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
```

[![pkglnk](https://www.pkglnk.dev/badge/unity-attributes.svg?style=pkglnk)](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

  1. Open Package Manager
  2. 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;

Comments

No comments yet. Be the first!