75 lines
2.3 KiB
C#
75 lines
2.3 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
public static class MeshBakerPurgeNullObjects
|
|
{
|
|
[MenuItem("Tools/Mesh Baker/Purge Null Objects From Selected Baker")]
|
|
public static void PurgeNullObjectsFromSelectedBaker()
|
|
{
|
|
GameObject selected = Selection.activeGameObject;
|
|
|
|
if (selected == null)
|
|
{
|
|
Debug.LogError("Aucun GameObject sélectionné.");
|
|
return;
|
|
}
|
|
|
|
Component[] components = selected.GetComponents<Component>();
|
|
|
|
bool foundList = false;
|
|
int totalRemoved = 0;
|
|
|
|
foreach (Component component in components)
|
|
{
|
|
if (component == null)
|
|
continue;
|
|
|
|
SerializedObject so = new SerializedObject(component);
|
|
|
|
// Nom utilisé par Mesh Baker pour la liste Objects To Be Combined
|
|
SerializedProperty objectsList = so.FindProperty("objsToMesh");
|
|
|
|
if (objectsList == null || !objectsList.isArray)
|
|
continue;
|
|
|
|
foundList = true;
|
|
|
|
int removed = 0;
|
|
|
|
// Important : on parcourt à l'envers pour supprimer sans décaler les indices restants.
|
|
for (int i = objectsList.arraySize - 1; i >= 0; i--)
|
|
{
|
|
SerializedProperty element = objectsList.GetArrayElementAtIndex(i);
|
|
|
|
if (element.propertyType == SerializedPropertyType.ObjectReference &&
|
|
element.objectReferenceValue == null)
|
|
{
|
|
objectsList.DeleteArrayElementAtIndex(i);
|
|
removed++;
|
|
}
|
|
}
|
|
|
|
if (removed > 0)
|
|
{
|
|
so.ApplyModifiedProperties();
|
|
EditorUtility.SetDirty(component);
|
|
totalRemoved += removed;
|
|
|
|
Debug.Log($"Mesh Baker : {removed} entrée(s) null supprimée(s) dans {component.GetType().Name}.");
|
|
}
|
|
}
|
|
|
|
if (!foundList)
|
|
{
|
|
Debug.LogError(
|
|
"Aucune liste 'objsToMesh' trouvée sur l'objet sélectionné. " +
|
|
"Sélectionne l'objet TextureBaker ou MeshBaker qui contient 'Objects To Be Combined'."
|
|
);
|
|
return;
|
|
}
|
|
|
|
AssetDatabase.SaveAssets();
|
|
|
|
Debug.Log($"Purge terminée. Total supprimé : {totalRemoved} entrée(s) null.");
|
|
}
|
|
} |