๐Ÿš€ Unity Inspector Utils

October 11, 2025 ยท View on GitHub

Unity Inspector Utils is a collection of powerful custom attributes designed to improve the Unity Inspector ( or Editor ) experience, making it more dynamic and user-friendly.

Features

  • Enhanced Readability & Organization โ€“ Keeps the Inspector clean by grouping and hiding fields dynamically.
  • Improved Workflow Efficiency โ€“ Reduces the need for custom editor scripts, making development faster and more intuitive.
  • Easy to Use & Integrate โ€“ Simply add attributes to your fields without modifying the Unity Editor itself.
  • Open-Source & Free to Use โ€“ Completely free, with full access to the source code. You can modify or extend its features as needed.

Compatibility

Unity VersionCompatibility
6000.0.32f1:heavy_check_mark:
2022.3.47f1:heavy_check_mark:
2022.3.20f1:heavy_check_mark:
2022.3.10f1:heavy_check_mark:
2019.4.0f1:heavy_check_mark:

How To Use

Import

Go to release tab (https://github.com/qweasfjbv/UnityInspectorUtils/releases) image

Download the .unitypackage file and import it into Unity.

image

First Of All

[IUtil.IUtilable]
public class MyClass : MonoBehaviour { /* ... */ }

To avoid conflicts with other libraries, classes that use TabGroup, FoldoutGroup, or Button must have the [IUtilable] attribute.

Tab / Foldout Group

[TabGroup("Main", "Tab1")]
public int mainTab1Int;
public Vector3 mainTab1Vec;

[TabGroup("Sub", "Tab1")]
public int subTab1Int;
public float subTab1Float;

[FoldoutGroup("Fold1")]
public float foldFloat1;
public float foldFloat2;

[TabGroup("Sub", "Tab1")]
public string subTab1String;

[TabGroup("Sub", "Tab2")]
public float subTab2Float;
public int subTab2Int;

[TabGroup("Main", "Tab2")]
public string mainTab2String;
public int mainTab2Int;

[TabGroup("Main", "Tab3")]
public string mainTab3String;
public int mainTab3Int;


If Attributes

public bool isReadonly;
[ReadOnlyIf(nameof(isReadonly))]
public int readonlyValue;

public bool isHide;
[HideIf(nameof(isHide))]
public float hideValue;

public bool isShow;
[ShowIf(nameof(isShow))]
public float showValue;


[System.Serializable]
public class NestedClass
{
    public bool IsShow;
    [ShowIf(nameof(IsShow))] public string showString;
}

public List<NestedClass> nestedClass = new();

public int[] intOptions = new int[] { 1, 2, 3 };
public float[] floatOptions = new float[] { 5.1f, 6.3f, 7.3f };
public string[] stringOptions = new string[] { "Option1", "Option2", "Option3" };

[SerializeField, PopupOption(nameof(intOptions))]
private int selectInt;

[SerializeField, PopupOption(nameof(floatOptions), 1)]
public float selectFloat;

[SerializeField, PopupOption(nameof(stringOptions), 2)]
public string selectString;

Button

		public string Func1Param1;
		[Space(10)]
		public int Func2Param1;
		public float Func2Param2;

		[Button]
		public void Func0()
		{
			Debug.Log($"Func0 Excuted");
		}

		[Button(nameof(Func2Param1), nameof(Func2Param2))]
		public void Func2(int param1, float param2)
		{
			Debug.Log($"Func2 Executed! \nParam1 : {param1}, Param2 : {param2}");
		}


Project Folder Custom

  1. Open folder custom window

  1. You can custom folder here.