Unity 6.3
0 онлайн 2 гостей 3 в системе
Вход

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,.