ResourceUid
Идентификаторы ассетов и таблица соответствия UID путям.
UID обозначает ассет, но не хранит его данные и не является ID игровой Entity. Числовое значение, текст uid:// и путь — разные представления. Создание кандидата, изменение заголовка файла и регистрация пути являются отдельными операциями.
CreateId()/CreateIdForPath() не регистрируют результат. HasId() проверяет таблицу, не файл. PathToUid() может вернуть исходный путь, а текущий SetId() способен оставить старую reverse-запись даже после RemoveId(): дефект подтверждён.
Для обычной работы с ассетами используйте штатные инструменты редактора; собственной runtime-таблицей управляйте явно, не освобождая engine-owned Singleton. ResourceSaver.SetUid не заменяет регистрацию. Проверки — Windows headless; редакторное сканирование, межпроцессный cache и другие платформы не проверены.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства1
SingletonСвойство
public static ResourceUidInstance Singleton { get; }Заимствованный wrapper глобального сервиса движка. Повторное получение использует cached managed wrapper; не создаёт отдельный реестр. Не вызывайте Free()/Dispose() у этого engine-owned объекта. Для обычной работы используйте статические методы класса.
Методы12
AddIdvoid
public static void AddId(long id, string path);Добавляет ID→путь в реестр процесса; при включённом reverse cache добавляет и путь→ID. Не создаёт файл, не меняет его UID-заголовок и не переименовывает ассет. Повтор существующего ID отвергается с диагностикой. Передавайте собственный допустимый ID и точный путь; изменение таблицы не является подтверждённым сохранением cache на диск.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
path | string | — |
idНеотрицательный ID; для операций таблицы учитывайте наличие и владение регистрацией.
pathТочный путь ассета; метод не создаёт и не перемещает сам файл.
CreateIdlong
public static long CreateId();Генерирует неотрицательный 63-битный кандидат, отсутствующий в текущем реестре. Не резервирует его, не вызывает AddId и не создаёт файл. При ошибке генератора возможен InvalidId. Получение ID не доказывает существование ассета; для собственной регистрации выполните отдельный AddId.
longНеотрицательный незарегистрированный кандидат либо InvalidId.
CreateIdForPathlong
public static long CreateIdForPath(string path);Создаёт кандидат по seed из имени проекта, пути в нижнем регистре и MD5 содержимого; занятые ID пропускаются. Не регистрирует значение и не создаёт файл. Повтор без регистрации дал тот же ID; после изменения содержимого/проекта/реестра это не гарантируется. Несуществующий путь тоже может дать допустимый кандидат, поэтому метод не является проверкой файла или стабильным content address.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathТочный путь ассета; метод не создаёт и не перемещает сам файл.
longНезарегистрированный кандидат; не доказательство существующего файла.
EnsurePathstring
public static string EnsurePath(string pathOrUid);Если строка начинается с uid://, использует UidToPath(); иначе возвращает её без изменений, даже если файла нет. Не создаёт каталог, не проверяет права и не является полной валидацией входа. Неизвестный UID наследует диагностику/пустой результат UidToPath().
| Имя | Тип | По умолчанию |
|---|---|---|
pathOrUid | string | — |
pathOrUidОбычный путь либо uid://; обычный путь возвращается без проверки существования.
stringРазрешённый UID-путь либо неизменённый обычный путь; существование не гарантируется.
GetIdPathstring
public static string GetIdPath(long id);Получает зарегистрированный путь ID; файл при этом не открывается и не проверяется. Перед вызовом в runtime проверьте неотрицательный ID и HasId(). InvalidId/неизвестный ID может дать диагностику и пустую строку. Редакторные fallback/scan отличаются и здесь не выполнялись.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
idНеотрицательный ID; для операций таблицы учитывайте наличие и владение регистрацией.
stringЗарегистрированный путь либо пустая строка при отсутствии/ошибке.
HasIdbool
public static bool HasId(long id);Проверяет наличие ключа в текущем реестре, не файла на диске и не актуальность обратной таблицы. После RemoveId() может быть false, хотя старый reverse path от предыдущего SetId остаётся; это проверено. Не является сканированием проекта или загрузкой ресурса.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
idНеотрицательный ID; для операций таблицы учитывайте наличие и владение регистрацией.
boolTrue для ключа текущего реестра; не проверка файла/обратной таблицы.
IdToTextstring
public static string IdToText(long id);Кодирует неотрицательный ID в строку uid://. Не проверяет регистрацию или наличие файла. Для любого отрицательного значения возвращает uid://<invalid>. Это кодирование ID, не создание новой регистрации или сериализация содержимого ассета.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
idНеотрицательный ID; для операций таблицы учитывайте наличие и владение регистрацией.
stringuid:// строка либо uid://<invalid> для отрицательного значения.
PathToUidstring
public static string PathToUid(string path);Запрашивает UID пути через ResourceLoader. В runtime используется reverse cache; если UID неизвестен, возвращается исходный путь, не InvalidId или обязательно пустая строка. Старый reverse path после SetId/RemoveId может дать текст UID уже без HasId(). Проверяйте тип результата и актуальную регистрацию; это не создание файла/UID.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathТочный путь ассета; метод не создаёт и не перемещает сам файл.
stringТекст UID либо исходный путь; результат нужно различать явно.
RemoveIdvoid
public static void RemoveId(long id);Удаляет ID и reverse-запись его текущего пути, не файл и не встроенный UID. Если SetId раньше оставил старый reverse path, RemoveId его не очищает; этот дефект воспроизведён. Отсутствующий ID даёт диагностику. Автоматическое сохранение/перестройка всего cache этой операцией не подтверждены.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
idНеотрицательный ID; для операций таблицы учитывайте наличие и владение регистрацией.
SetIdvoid
public static void SetId(long id, string path);Обновляет путь уже зарегистрированного ID, не перемещая файл. Ограничение 1.0.0: новый reverse path добавляется, но старый не удаляется; PathToUid(oldPath) может продолжать возвращать тот же UID. Это воспроизведено. Чтобы избежать этого при собственном runtime-обновлении, удалите старую регистрацию до добавления новой с тем же ID, вместо SetId; операции не атомарны. Отсутствующий ID даёт диагностику.
| Имя | Тип | По умолчанию |
|---|---|---|
id | long | — |
path | string | — |
idНеотрицательный ID; для операций таблицы учитывайте наличие и владение регистрацией.
pathТочный путь ассета; метод не создаёт и не перемещает сам файл.
TextToIdlong
public static long TextToId(string textId);Разбирает uid:// в неотрицательный ID либо InvalidId для отвергнутого ввода. Не является строгой проверкой канонического UID: пустой suffix uid:// даёт 0, переполнение не является отдельной диагностикой. Не проверяет реестр/файл. Для строгого входа сопоставьте канонический IdToText() и отдельно HasId().
| Имя | Тип | По умолчанию |
|---|---|---|
textId | string | — |
textIdТекст uid://; каноничность и наличие ID проверяются отдельно.
longЧисловой ID либо -1; допустимое число ещё не означает регистрацию.
UidToPathstring
public static string UidToPath(string uid);Преобразует текст UID в ID и запрашивает зарегистрированный путь. Не ищет перемещённый файл автоматически. Для неизвестного/невалидного ID возможны диагностика и пустая строка; проверяйте TextToId()/HasId() перед runtime-вызовом. Полученный путь не доказывает существование файла.
| Имя | Тип | По умолчанию |
|---|---|---|
uid | string | — |
uidТекст зарегистрированного UID, не обычный путь файла.
stringПуть реестра либо пустой результат; это не проверка файловой системы.
Поля и константы1
InvalidIdПоле
public const long InvalidId = -1;Константа -1, обозначающая отсутствие/недопустимость ID. Это не рабочий UID и не ключ для AddId/GetIdPath. Отрицательное значение IdToText() превращает в uid://<invalid>, а не в путь файла.