Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


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

existingObjects

A list of existing objects whose names define the set of already-taken names.

name

Desired name to use as-is, or as a base for a unique name.

Returns

Type

Description

stringA name not used by any object in
existingObjects
.

Remarks

If the provided name matches the name of any object in
existingObjects
, a unique name is generated by appending the next available numerical increment.
Use this method instead of ObjectNames.GetUniqueName when you already hold a
List<Object>
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.

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); }}