如下:
public class GetUniqueNameTool
{
static public string GetUniqueNameFromParent(string nameInit, Transform parent)
{
if (string.IsNullOrEmpty(nameInit)) return null;
if (!parent) return null;
string[] names = new string[parent.childCount];
for (int i = 0; i < names.Length; i++)
{
names[i] = parent.GetChild(i).name;
}
return GetUniqueName(nameInit, names);
}
static public string GetUniqueName(string nameInit, string[] names)
{
if (string.IsNullOrEmpty(nameInit)) nameInit = "";
string objName = Regex.Replace(nameInit, @"\d+$", "");
int index = 1;
string newName = nameInit;// objName + index.ToString("D4");
while (true)
{
bool nameExits = false;
foreach (string n in names)
{
if (n == newName)
{
nameExits = true;
newName = objName + index.ToString("D4");
index++;
break;
}
}
if (!nameExits) return newName;
}
}
}