{"id":18458840,"url":"https://github.com/wooshiidev/wooshiiattributes","last_synced_at":"2025-04-08T05:34:40.450Z","repository":{"id":48812343,"uuid":"327048194","full_name":"WooshiiDev/WooshiiAttributes","owner":"WooshiiDev","description":"A growing collection of flexible, powerful Unity attributes","archived":false,"fork":false,"pushed_at":"2023-06-05T00:02:19.000Z","size":1375,"stargazers_count":37,"open_issues_count":4,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-23T07:02:49.902Z","etag":null,"topics":["editor","unity","unity3d"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WooshiiDev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-05T15:59:13.000Z","updated_at":"2025-03-12T14:12:41.000Z","dependencies_parsed_at":"2022-09-11T00:11:53.462Z","dependency_job_id":null,"html_url":"https://github.com/WooshiiDev/WooshiiAttributes","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WooshiiDev%2FWooshiiAttributes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WooshiiDev%2FWooshiiAttributes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WooshiiDev%2FWooshiiAttributes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WooshiiDev%2FWooshiiAttributes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WooshiiDev","download_url":"https://codeload.github.com/WooshiiDev/WooshiiAttributes/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247785919,"owners_count":20995641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["editor","unity","unity3d"],"created_at":"2024-11-06T08:20:25.766Z","updated_at":"2025-04-08T05:34:35.440Z","avatar_url":"https://github.com/WooshiiDev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003ch1 align=\"center\"\u003eWooshiiAttributes\u003c/h1\u003e\n\u003ch4 align=\"center\"\u003eA growing collection of flexible, powerful Unity attributes\u003c/h4\u003e\n\u003cp align=\"center\"\u003e\n \u003ca href=\"https://unity3d.com\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Made%20with-Unity-grey.svg?style=for-the-badge\u0026logo=unity\" alt=\"Unity Link\"\u003e\n \u003ca href=\"https://unity3d.com/get-unity/download\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Supported-2018.4+-grey.svg?style=for-the-badge\u0026logo=unity\" alt=\"Unity Download Link\"\u003e\n \u003ca href=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/main/LICENSE\"\u003e\n \u003cimg src=\"https://img.shields.io/badge/License-MIT-brightgreen.svg?style=for-the-badge\" alt=\"License MIT\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e \n  \u003ca href=\"#about\"\u003eAbout\u003c/a\u003e •\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#attributes\"\u003eAttributes\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e \n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/README_Attr_Full_Example.png\" alt=\"Example Image\"\u003e\n\u003c/p\u003e\n\n## About\n\n\u003cp\u003e\n WooshiiAttributes is a collection of attributes to flexibility and better visualisation in the Unity Inspector.\n\u003c/p\u003e\n\n\u003cp\u003e\n Not only does WooshiiAttribute add general attributes for headers, dropdowns or for providing extra information, but also allows attributes to manipulate how information is displayed; local and global groups, and also attributes to modify how arrays show rather than the elements themselves. See \u003ca href=\"#attributes\"\u003eattributes\u003c/a\u003e for examples.\n\u003c/p\u003e\n\n\u003cp\u003eFeatures, systems and new attribute types will be added to this repository as development continues.\u003c/p\u003e\n \n## Installation\n \n\u003cp\u003e\n For now you can either download using the zip or check \u003ca href=\"https://github.com/WooshiiDev/WooshiiAttributes/releases\"\u003ereleases\u003c/a\u003e for all Unity Packages.\n\u003c/p\u003e\n\n## Attributes\n\n\u003cp align=\"center\"\u003e \n  \u003ca href=\"#properties\"\u003eProperties\u003c/a\u003e •\n  \u003ca href=\"#decorators\"\u003eDecorators\u003c/a\u003e •\n  \u003ca href=\"#groups\"\u003eGroups\u003c/a\u003e •\n  \u003ca href=\"#globals\"\u003eGlobals\u003c/a\u003e •\n  \u003ca href=\"#arrays\"\u003eArrays\u003c/a\u003e •\n  \u003ca href=\"#methods\"\u003eMethods\u003c/a\u003e\n\u003c/p\u003e\n\n### Properties\n\n#### Basics\n\nVector3 and Vector2 fields can be clamped within a range.\nIntegers and floats can also be clamped, but also have a slider attribute if preferred.\n\n```cs\n[IntClamp (0, 10, true)] public int clampedInteger;\n[FloatClamp (0, 10, true)] public float clampedFloat;\n\n[IntSlider (0, 10)] public int integerSlider;\n[FloatSlider (0, 10)] public float floatSlider;\n\n[Vector2Clamp (0, 10)] public Vector2 clampedVector2;\n[Vector3Clamp (0, 10)] public Vector3 clampedVector3;\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/PropertyDrawers/README_Attr_Basics_Example.png\"\u003e\n\u003c/a\u003e\n\n#### ReadOnly \n\nReadonly restricts field editing, and can be set to hide depending on the current state of the editor.\n\n```cs\n[ReadOnly (DisplayMode.BOTH)] public string readOnlyAll = \"Can see me at all times. Can't edit me though.\";\n[ReadOnly (DisplayMode.EDITOR)] public string readOnlyEditor = \"Can see me in the Editor when not playing only.\";\n[ReadOnly (DisplayMode.PLAYING)] public string readOnlyPlay = \"Can see me when Playing only.\";\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/PropertyDrawers/README_Attr_ReadOnly_Example.png\"\u003e\n\u003c/a\u003e\n\n#### Array Elements \n\nArray Elements will add direct removal or addition buttons to each element of a collection in the inspector.\n\n```cs\n[ArrayElements] public float[] arrayElements;\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/PropertyDrawers/README_Attr_ArrayElements_Example.png\"\u003e\n\u003c/a\u003e\n\n### Decorators\n\n#### HeaderLine \n\nHeader Lines appear like normal headers, but keep the header capitalized and underlined to show a more clear, sharp visualisation between sections.\n\n```cs\n[HeaderLine (\"ReadOnly\")]\n[ReadOnly (DisplayMode.BOTH)] public string readOnlyAll = \"Can see me at all times. Can't edit me though.\";\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/DecoratorDrawers/README_Attr_HeaderLine_Example.png.png\"\u003e\n\u003c/a\u003e\n\n### Paragraph\n\nParagraph's will display text contained in a box above a field. The background colour, text colour and text alignment can be set in the attribute too.\nPlease note that the colours defined are hexadecimal.\n\n```cs\n[Paragraph (\"This be a string with a paragraph. Go ahead. Type stuff. Yes.\", \"#D2D2D2\", \"#1000FF\")]\npublic string stringWithParagraph;\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/DecoratorDrawers/README_Attr_Paragraph_Example.png\"\u003e\n\u003c/a\u003e\n\n#### Comment\n\nComments draw helpboxes to the inspector, allowing information to be provided about fields with an icon for the message type.\n\n```cs\n[Comment (\"This is an integer.\\nAmazing. Easy. Simple.\", CommentAttribute.MessageType.INFO)]\npublic int intValue;\n\n[Comment (\"This is a string.\\nCareful - can disguise itself with ToString()\", CommentAttribute.MessageType.WARNING)]\npublic string stringValue;\n\n[Comment (\"Toggle value.\\nTake caution when editing. Can be indecisive. Also likes to bite.\", CommentAttribute.MessageType.ERROR)]\npublic bool boolValue;\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/DecoratorDrawers/README_Attr_Comment_Example.png\"\u003e\n\u003c/a\u003e\n\n### Groups\n\nLocal Groups can be created using attributes that are named with `BeginGroup` and `EndGroup` respectively to begin and end a group. `BeginGroup` has optional parameters to set capitalization, whether the title is underlined, and if the title is within the group box or not.\n\n```cs\n[BeginGroup (\"Group of stuff\", true, true, true)]\npublic int a; \npublic int b;\npublic int c;\npublic int d;\npublic int e;\npublic int f;\npublic int g;\npublic int h;\npublic int i;\n\npublic ExampleData[] j;\n\n[EndGroup()]\npublic int k;\n```\n \n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/Groups/README_Attr_LocalGroup_Example.png\"\u003e\n\u003c/a\u003e\n\n### Globals\n\nGlobals are attributes that affect a group of members together no matter where they are in the script. Any field that uses a global attribute, will be displayed at the bottom of the script.\n\nGlobals need to be applied to each field manually however, which may be slower. If you're specifically using globals for groups, see \u003ca href=\"#groups\"\u003eGroups\u003c/a\u003e for local versions.\n\n#### HeaderGroup\n\nGroups all fields under a header. \n\n```cs\n[HeaderGroup (\"Header Group Stats\")] public int otherHealth, otherSpeed, otherDamage;\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/GlobalDrawers/README_Attr_GlobHeader_Example.png\"\u003e\n\u003c/a\u003e\n\n#### HeaderLineGroup\n\nGroups all fields under a header but formatted like the `HeaderLine` attribute.\n\n```cs\n[HeaderLineGroupAttribute (\"Header Line Group Stats\")] public int health, speed, damage;\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/GlobalDrawers/README_Attr_GlobHeaderLine_Example.png\"\u003e\n\u003c/a\u003e\n\n#### ContainedGroup\n\nContains the fields within a box.\n\n```cs\n[ContainedGroup (\"Contained Group Stats\")] public int containedHealth, containedSpeed, containedDamage;\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/GlobalDrawers/README_Attr_GlobContained_Example.png\"\u003e\n\u003c/a\u003e\n\n#### FoldoutGroup\n\nGroup that has a foldout to hide or show the fields when required.\n\n```cs\n[FoldoutGroup (\"Foldout Group Stats\")] public int foldedHealth, foldedSpeed, foldedDamage;\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/GlobalDrawers/README_Attr_GlobFoldout_Example.png\"\u003e\n\u003c/a\u003e\n\n### Arrays\n\nArray drawers unlike property drawers work on the array itself rather than the elements that are in the array.\n\n#### Reorderable\n\nAllows for reorderable lists and arrays in the inspector.\n\n```cs\n[Reorderable] public ExampleData[] childClassArray;\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/ArrayDrawers/README_Attr_Reorderable_Example.png\"\u003e\n\u003c/a\u003e\n\n### Methods\n\n#### MethodButton\n\nMethod buttons will display a button for each method given a `MethodButton`. These can be private or public buttons too. The attribute has an optional string parameter allowing you to name the button that will appear in the inspector. By default it will take the method name.\n\n```cs\n[MethodButton ()]\npublic void ExampleMethod()\n{\n    Debug.Log (\"Example Method\");\n}\n```\n\n\u003ca\u003e\n \u003cimg src=\"https://github.com/WooshiiDev/WooshiiAttributes/blob/readme-assets/.github/Methods/README_Attr_Button_Example.png\"\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwooshiidev%2Fwooshiiattributes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwooshiidev%2Fwooshiiattributes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwooshiidev%2Fwooshiiattributes/lists"}