Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

AssetDatabase.TryGetGUIDAndLocalFileIdentifier

Объявление

public static bool TryGetGUIDAndLocalFileIdentifier(Object obj, out string guid, out int localId); Устаревший Пожалуйста, используйте перегрузку этой функции, которая использует длинный тип данных для параметра localId, потому что эта версия может возвращать переполненный localID. Это может произойти при вызове объектов, которые являются частью префаба.

public static bool TryGetGUIDAndLocalFileIdentifier(int instanceID, out string guid, out int localId);

public static bool TryGetGUIDAndLocalFileIdentifier(Object obj, out string guid, out long localId);

public static bool TryGetGUIDAndLocalFileIdentifier(int instanceID, out string guid, out long localId);

public static bool TryGetGUIDAndLocalFileIdentifier(LazyLoadReference assetRef, out string guid, out long localId);

Параметры

instanceID InstanceID объекта, для которого требуется получить информацию.
obj Объект, для которого необходимо получить GUID и идентификатор файла.
assetRef Ссылка на ресурс, для которого необходимо получить GUID и идентификатор файла.
guid GUID актива.
localId Идентификатор локального файла этого актива.

Возвращает

bool true, если guid и идентификатор файла были успешно найдены, в противном случае — false.

Описание

Получить GUID и идентификатор локального файла из идентификатора экземпляра объекта.

Предупреждение. Избегайте устаревших версий этой функции, которые используют int для localId. параметр вместо long. В некоторых случаях локальные идентификаторы могут быть длиннее 32 бит, например, для префабов. Когда Unity сериализует ссылку на ресурс, она указывает на две вещи: GUID и идентификатор файла. GUID — это уникальный хэш, а идентификатор файла — это значение относительно актива. Оба эти значения используются, когда сериализованный объект ссылается на другой объект.

При работе с текстовым сериализованным проектом (см. Настройки редактора) эту информацию можно изменить вручную. Обычное использование — перемещение файлов сценариев C# из проекта в библиотеку DLL с сохранением любых игровых объектов, использующих эти сценарии, нетронутыми. В качестве примера предположим, что ваш проект содержит C# MonoBehaviour, Scene и GameObject с прикрепленным этим сценарием. При сериализации файл сцены Unity будет содержать что-то похожее на это (сокращенное до соответствующих частей):

/* 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 Instance ID: " + obj.GetInstanceID() + "\n GUID: " + guid + "\n File ID: " + file); } } Debug.Log(stringBuilder.ToString()); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3