I had run into a situation while working on an editor tool. I needed to reference GameObjects in a scene across editing sessions in a weird way. So, if I have a reference to a scene object, open a new scene, then reopen the original scene, my reference was broken because it's actually a new instance of the object. If you put the inspector into debug mode, you can see the Local Identifier In File field under the Instance ID. This integer stays the same across editing sessions. But, as detailed here in a feedback request by D-Lask, there's no function to get that ID for scene objects: http://feedback.unity3d.com/suggestions/scene-object-local-file-id-from-instance-id UnityEditor.Unsupported.GetLocalIdentifierInFile(int instanceId) always returns zero for scene objects just like D-Lask says. After some digging, though, I came up with this. Code (CSharp): PropertyInfo inspectorModeInfo = typeof(SerializedObject).GetProperty("inspectorMode", BindingFlags.NonPublic | BindingFlags.Instance); SerializedObject serializedObject = new SerializedObject(unityObject); inspectorModeInfo.SetValue(serializedObject, InspectorMode.Debug, null); SerializedProperty localIdProp = serializedObject.FindProperty("m_LocalIdentfierInFile"); //note the misspelling! int localId = localIdProp.intValue; Basically, setting a property called inspectorMode on a SerializedObject instance enables two extra serialized properties: m_InstanceID and m_LocalIdentfierInFile. Please note that "identifier" is misspelled. New objects have a Local ID value of zero, and get a non-zero value after the scene is saved.