Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


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

The object to retrieve GUID and File Id for.

guid

The GUID of an asset.

localId

The local file identifier of this asset.

Returns

Type

Description

boolTrue if the guid and file id were successfully found, false if not.

Remarks

Warning: Avoid the obsolete versions of this function, which use
int
for the localId parameter instead of
long
. 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.
If 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

instanceID

InstanceID of the object to retrieve information for.

guid

The GUID of an asset.

localId

The local file identifier of this asset.

Returns

Type

Description

boolTrue if the guid and file id were successfully found, false if not.

Remarks

Warning: Avoid the obsolete versions of this function, which use
int
for the localId parameter instead of
long
. 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.
If 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.

guid

The GUID of an asset.

localId

The local file identifier of this asset.

Returns

Type

Description

boolTrue if the guid and file id were successfully found, false if not.

Remarks

Warning: Avoid the obsolete versions of this function, which use
int
for the localId parameter instead of
long
. 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.
If 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