internal void ConvertGlobalObjectIdsToSceneObjects() { activeObjects.Clear(); var gids = globalObjectIdSet.ToArray(); var outputObjects = new UnityEngine.Object[gids.Length]; GlobalObjectId.GlobalObjectIdentifiersToObjectsSlow(gids, outputObjects); for (var i = 0; i < outputObjects.Length; i++) { var obj = outputObjects[i]; //Debug.Log($"GID: {gids[i]}, OBJ: {obj} -> GUID: {GlobalObjectId.GetGlobalObjectIdSlow(obj)}"); //Sometimes invalid objects are returned. https://fogbugz.unity3d.com/f/cases/1291291/ //This is the workaround. if (obj != null) { //if(gids[i] == GlobalObjectId.GetGlobalObjectIdSlow(obj)) var x = gids[i]; var y = GlobalObjectId.GetGlobalObjectIdSlow(obj); if (y.identifierType == x.identifierType && y.targetObjectId == x.targetObjectId && y.targetPrefabId == x.targetPrefabId && y.assetGUID == x.assetGUID) { activeObjects.Add(obj); } } } }