AssetDatabase.TryGetGUIDAndLocalFileIdentifier
Declaration
public static bool TryGetGUIDAndLocalFileIdentifier(Object obj, out string guid, out long localId);public static bool TryGetGUIDAndLocalFileIdentifier(EntityId entityId, out string guid, out long localId);Obsolete public static bool TryGetGUIDAndLocalFileIdentifier(int instanceID, out string guid, out long localId);public static bool TryGetGUIDAndLocalFileIdentifier(LazyLoadReference<T> assetRef, out string guid, out long localId);Параметры
| Параметр | Описание |
|---|---|
| entityId | EntityId объекта, для которого требуется получить информацию. |
| instanceID | InstanceID объекта, для которого требуется получить информацию. |
| Объект | Объект для получения GUID и идентификатор файла. |
| assetRef | Ссылка на ассет для получения GUID и идентификатор файла для. |
| ГУИД | GUID ассета. |
| localId | Локальный идентификатор файла этого ассета. |
Возвращаемое значение
логическое True, если guid и id файла были успешно найдены, false, если нет.
Описание
Получить GUID и идентификатор локального файла из идентификатора экземпляра объекта.
Предупреждение: Избегайте устаревших версий этой функции, которые используют int для параметра localId вместо long. Локальные идентификаторы могут быть длиннее 32 бит в некоторых случаях, например, для Префабы. Когда Unity сериализирует ссылку на ассет, это указывает на две вещи: GUID и файл ID. GUID являются уникальным хэшом, а файл ID является значением относительно ассета. Оба эти значения используются, когда сериализированный ассет ссылается на другой ассет.
Если работаете с текстовым сериализированным проектом (см. Настройки редактора) можно вручную изменить эту информацию. Обычно используется перемещение файлов скриптов C# из проекта в DLL, сохраняя любые GameObjects нетронутыми с помощью этих скриптов. В качестве примера, предположим, что ваш проект содержит C# MonoBehaviour, Scene и GameObject с прикрепленным этим скриптом. При сериализации файл Unity Scene будет содержать что-то похожее на следующее (сокращённое до соответствующих частей):
/* example .unity Scene contents:
--- !u!1 &65078845 GameObject: m_Component: -component: {fileID : 65078850} --- !u!114 &65078850 MonoBehaviour: m_Script: {fileID : 11500000, guid : 9cbd8cdf99d44b58972fbc7f6f38088f, type : 3}
*/
using System.Text; using UnityEngine; using UnityEditor;
class ShowAssetIds { [MenuItem("Assets/Show Asset Ids")] static void MenuShowIds() { var stringBuilder = new StringBuilder();
foreach (var obj in AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(Selection.activeObject))) { string guid; long file;
if (AssetDatabase.TryGetGUIDAndLocalFileIdentifier(obj, out guid, out file)) { stringBuilder.AppendFormat("Asset: " + obj.name + "\n EntityId: " + obj.GetEntityId() + "\n GUID: " + guid + "\n File ID: " + file); } }
Debug.Log(stringBuilder.ToString()); } }
Дополнительные ресурсы: ,GlobalObjectId,.