๐ 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 Version | Compatibility |
|---|---|
| 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)
Download the .unitypackage file and import it into Unity.
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();
Popup Option
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
- Open folder custom window
- You can custom folder here.