64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
public class AutoIncrementer : EditorWindow
|
|
{
|
|
private GameObject parentObject;
|
|
private string fieldName = "desiredField"; // Replace with the field name if you want
|
|
|
|
[MenuItem("Tools/Auto Increment Field")]
|
|
public static void ShowWindow()
|
|
{
|
|
GetWindow<AutoIncrementer>("Auto Incrementer");
|
|
}
|
|
|
|
private void OnGUI()
|
|
{
|
|
GUILayout.Label("Auto-Increment Field", EditorStyles.boldLabel);
|
|
|
|
// Select the parent GameObject (if the objects are grouped)
|
|
parentObject = (GameObject)EditorGUILayout.ObjectField("Parent Object", parentObject, typeof(GameObject), true);
|
|
|
|
fieldName = EditorGUILayout.TextField("Field Name", fieldName);
|
|
|
|
if (GUILayout.Button("Auto-Increment"))
|
|
{
|
|
if (parentObject != null)
|
|
{
|
|
AutoIncrement();
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning("Please select a parent GameObject containing the objects.");
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AutoIncrement()
|
|
{
|
|
int counter = 0;
|
|
|
|
foreach (Transform child in parentObject.transform)
|
|
{
|
|
var component = child.GetComponent<MonoBehaviour>(); // Assuming a custom MonoBehaviour script
|
|
|
|
if (component != null)
|
|
{
|
|
var field = component.GetType().GetField(fieldName);
|
|
|
|
if (field != null && field.FieldType == typeof(int))
|
|
{
|
|
field.SetValue(component, counter);
|
|
counter++;
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning($"Field '{fieldName}' not found or not of type 'int' on {child.name}");
|
|
}
|
|
}
|
|
}
|
|
|
|
Debug.Log("Auto-incrementing finished!");
|
|
}
|
|
}
|