TryGetGUIDAndLocalFileIdentifier
Get the GUID and local file id from an object instance id.
Read time 5 minutesLast updated 12 days ago
Definition
- Type: Method
- Namespace: UnityEditor
- Assembly: UnityEditor
TryGetGUIDAndLocalFileIdentifier(Object, string, long)
Get the GUID and local file id from an object instance id.
public static bool TryGetGUIDAndLocalFileIdentifier(Object obj, out string guid, out long localId)
Parameters
Returns
Type | Description |
|---|---|
| bool | True if the guid and file id were successfully found, false if not. |
Remarks
Warning: Avoid the obsolete versions of this function, which use for the localId parameter instead of . Local Ids can be longer than 32 bits in some cases, such as for Prefabs. When Unity serializes an asset reference it points to two things: the GUID and file ID. GUID is a unique hash, and file ID is a value relative to the asset. Both of these values are used when a serialized asset references another asset.
intlongIf working with a text serialized project (see Editor Settings) it is possible to manually modify this information. A common use is moving C# script files from a project to a DLL while keeping any GameObjects using these scripts intact. As an example, suppose your project contains a C# MonoBehaviour, a Scene, and a GameObject with this script attached. When serialized the Unity Scene file will contain something that looks like this (reduced to the relevant parts):
/* example .unity Scene contents:--- !u!1 &65078845GameObject: m_Component: -component: {fileID : 65078850}--- !u!114 &65078850MonoBehaviour: 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()); }}
Additional Resources: GlobalObjectId
TryGetGUIDAndLocalFileIdentifier(int, string, long)
Get the GUID and local file id from an object instance id.
public static bool TryGetGUIDAndLocalFileIdentifier(int instanceID, out string guid, out long localId)
Parameters
Returns
Type | Description |
|---|---|
| bool | True if the guid and file id were successfully found, false if not. |
Remarks
Warning: Avoid the obsolete versions of this function, which use for the localId parameter instead of . Local Ids can be longer than 32 bits in some cases, such as for Prefabs. When Unity serializes an asset reference it points to two things: the GUID and file ID. GUID is a unique hash, and file ID is a value relative to the asset. Both of these values are used when a serialized asset references another asset.
intlongIf working with a text serialized project (see Editor Settings) it is possible to manually modify this information. A common use is moving C# script files from a project to a DLL while keeping any GameObjects using these scripts intact. As an example, suppose your project contains a C# MonoBehaviour, a Scene, and a GameObject with this script attached. When serialized the Unity Scene file will contain something that looks like this (reduced to the relevant parts):
/* example .unity Scene contents:--- !u!1 &65078845GameObject: m_Component: -component: {fileID : 65078850}--- !u!114 &65078850MonoBehaviour: 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()); }}
Additional Resources: GlobalObjectId
TryGetGUIDAndLocalFileIdentifier<T>(LazyLoadReference<T>, string, long)
Get the GUID and local file id from an object instance id.
public static bool TryGetGUIDAndLocalFileIdentifier<T>(LazyLoadReference<T> assetRef, out string guid, out long localId) where T : Object
Parameters
The asset reference to retrieve GUID and File Id for.
The GUID of an asset.
The local file identifier of this asset.
Returns
Type | Description |
|---|---|
| bool | True if the guid and file id were successfully found, false if not. |
Remarks
Warning: Avoid the obsolete versions of this function, which use for the localId parameter instead of . Local Ids can be longer than 32 bits in some cases, such as for Prefabs. When Unity serializes an asset reference it points to two things: the GUID and file ID. GUID is a unique hash, and file ID is a value relative to the asset. Both of these values are used when a serialized asset references another asset.
intlongIf working with a text serialized project (see Editor Settings) it is possible to manually modify this information. A common use is moving C# script files from a project to a DLL while keeping any GameObjects using these scripts intact. As an example, suppose your project contains a C# MonoBehaviour, a Scene, and a GameObject with this script attached. When serialized the Unity Scene file will contain something that looks like this (reduced to the relevant parts):
/* example .unity Scene contents:--- !u!1 &65078845GameObject: m_Component: -component: {fileID : 65078850}--- !u!114 &65078850MonoBehaviour: 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()); }}
Additional Resources: GlobalObjectId