AssetDatabase.GenerateUniqueAssetPath
Declaration
public static string GenerateUniqueAssetPath(string path);Параметры
| Параметр | Описание |
|---|---|
| путь | Имя пути для создания. |
Описание
Создает новый уникальный путь для ассета.
При вызове этого метода Unity проверяет, существует ли уже ассет с указываемым путем и именем файла. Если нет, Unity возвращает ту же строку, что и вы. Если существующий ассет имеет такой же путь и имя файла, Unity добавляет число 1 к имени файла и проверяет снова. Он продолжает увеличивать это число и проверять снова, пока не найдет несуществующее имя файла, и возвращает путь с новым уникальным именем файла.
Все генерируемые пути относятся к папке проекта, например: Assets/Textures/hello.png.
По умолчанию Unity использует пробел для разделения имени файла от числа, которое он добавляет. Например, если вы указываете путь Assets/Textures/hello.png и этот файл уже существует, Unity возвращает Assets/Textures/hello 1.png. Чтобы изменить это поведение, отключите в Редакторе параметр Пространство перед номером в именах ассетов или установите EditorSettings.assetNamingUsesSpace на false.
using UnityEditor; using UnityEngine;
public class GenerateUniqueAssetPathExample : MonoBehaviour { [MenuItem("APIExamples/GenerateUniqueAssetPath")] static void GenerateUniqueAssetPathForFilesWithSameName() { for (int i = 0; i < 5; ++i) { //The file names that this should create are: // Assets/Artifacts/material.mat // Assets/Artifacts/material 1.mat // Assets/Artifacts/material 2.mat // Assets/Artifacts/material 3.mat // Assets/Artifacts/material 4.mat var uniqueFileName = AssetDatabase.GenerateUniqueAssetPath("Assets/Artifacts/material.mat");
Material material = new Material(Shader.Find("Specular")); AssetDatabase.CreateAsset(material, uniqueFileName); } } }