GetUniqueObjectName(List<Object>, string)
Returns a unique name using the provided name as a base, derived from the names of a list of existing objects.
Read time 1 minuteLast updated 6 days ago
Definition
- Type: Method
- Namespace: UnityEditor
- Assembly: UnityEditor.CoreModule
public static string GetUniqueObjectName(List<Object> existingObjects, string name)
Parameters
A list of existing objects whose names define the set of already-taken names.
Desired name to use as-is, or as a base for a unique name.
Returns
Type | Description |
|---|---|
| string | A name not used by any object in |
Remarks
If the provided name matches the name of any object in , a unique name is generated by appending the next available numerical increment.
existingObjectsUse this method instead of ObjectNames.GetUniqueName when you already hold a of existing objects. It avoids allocating a temporary string array, making it suitable for allocation-sensitive contexts such as large-hierarchy operations and frequently called Editor tools.
List<Object>Additional Resources: ObjectNames.GetUniqueName, GameObjectUtility.GetUniqueNameForSibling, GameObjectUtility.EnsureUniqueNameForSibling.
Examples
using System.Collections.Generic;using UnityEngine;using UnityEditor;public class ExampleClass{ public void Example() { // Build a list of objects without extracting their names into a string array. var existingObjects = new List<Object> { new GameObject("Object"), new GameObject("Thing"), new GameObject("Thing (1)") }; // Displays "Object (1)" Debug.Log(ObjectNames.GetUniqueObjectName(existingObjects, "Object")); // Displays "Thing (2)" Debug.Log(ObjectNames.GetUniqueObjectName(existingObjects, "Thing")); // Displays "Other" Debug.Log(ObjectNames.GetUniqueObjectName(existingObjects, "Other")); foreach (Object obj in existingObjects) Object.DestroyImmediate(obj); }}