编辑器扩展:查找GameObject中是否存在重复命名的节点
[MenuItem(@"Tools/【美术专用】/查找重命名", false, 90)]
static void CheckSelectedObjectReName()
{
if (Selection.activeGameObject == null)
{
UnityEngine.Debug.Log("选择需要检查的Prefab");
return;
}
Dictionary<string, List<string>> nameDic = new Dictionary<string, List<string>>();
AddGameObjectChild(Selection.activeGameObject.transform, nameDic, 1);
foreach (var kv in nameDic)
{
if (kv.Value.Count > 1)
{
UnityEngine.Debug.Log(kv.Key);
}
}
}
static void AddGameObjectChild(Transform parentObj, Dictionary<string, List<string>> nameDic, int checkLayer)
{
for (int i = 0; i < parentObj.childCount; i++)
{
string childName = parentObj.GetChild(i).name;
if (!nameDic.ContainsKey(childName))
{
nameDic.Add(childName, new List<string>());
}
nameDic[childName].Add(childName);
AddGameObjectChild(parentObj.GetChild(i), nameDic, checkLayer + 1);
}
}
选择需要查找的 GameObejct,执行Editor,控制台即可输出Log信息