{"record":{"id":"1e16ee7f84082aee","repo":"Unity-Technologies/UnityCsReference","slug":"plaingameobjects-has-a-null-gameobject","errorCode":null,"errorMessage":"plainGameObjects has a null GameObject","messagePattern":"plainGameObjects has a null GameObject","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/Prefabs/PrefabUtility.cs","lineNumber":2398,"sourceCode":"        {\n            ThrowIfInvalidArgumentsForConvertToPrefabInstance(plainGameObject, prefabAssetRoot, true, mode);\n\n            ConvertToPrefabInstance_NoInputValidation(plainGameObject, prefabAssetRoot, settings, mode);\n\n            EditorUtility.ForceRebuildInspectors();\n        }\n\n        public static void ConvertToPrefabInstances(GameObject[] plainGameObjects, GameObject prefabAssetRoot, ConvertToPrefabInstanceSettings settings, InteractionMode mode)\n        {\n            if (plainGameObjects == null)\n                throw new ArgumentNullException(nameof(plainGameObjects));\n\n            if (plainGameObjects.Length == 0)\n                throw new ArgumentException(nameof(plainGameObjects) + \" has no objects\");\n\n            foreach(var go in plainGameObjects)\n                if (go == null)\n                    throw new ArgumentException(nameof(plainGameObjects) + \" has a null GameObject\");\n\n            if (settings == null)\n                throw new ArgumentNullException(nameof(settings));\n\n            ThrowIfInvalidAssetForReplacePrefabInstance(prefabAssetRoot, mode);\n\n            var topLevelGameObjects = GetTopLevelGameObjects(plainGameObjects);\n            foreach (var go in topLevelGameObjects)\n                ThrowIfInvalidArgumentsForConvertToPrefabInstance(go, prefabAssetRoot, false, mode);\n\n            foreach (var go in topLevelGameObjects)\n                ConvertToPrefabInstance_NoInputValidation(go, prefabAssetRoot, settings, mode);\n\n            EditorUtility.ForceRebuildInspectors();\n        }\n\n        private static void ConvertToPrefabInstance_NoInputValidation(GameObject plainGameObject, GameObject prefabAssetRoot, ConvertToPrefabInstanceSettings settings, InteractionMode mode)\n        {","sourceCodeStart":2380,"sourceCodeEnd":2416,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/Prefabs/PrefabUtility.cs#L2380-L2416","documentation":"PrefabUtility.ConvertToPrefabInstances throws an ArgumentException when any element in the plainGameObjects array is null. Each GameObject must be a valid reference because the API iterates and converts each one individually.","triggerScenarios":"Calling ConvertToPrefabInstances with an array containing at least one null element (e.g., a destroyed GameObject reference, or an array slot that was never assigned).","commonSituations":"GameObject was destroyed between array population and the API call, a FindObjectsOfType result included stale references, or a manually constructed array has uninitialized slots.","solutions":["Filter out null elements before calling: gos = gos.Where(g => g != null && g != null).ToArray() (checking both C# null and Unity's fake-null).","Use gos.Where(g => g != null).ToArray() after checking Unity's null comparison for destroyed objects.","Rebuild the array from a fresh source (Selection, FindObjectsOfType) right before the call."],"exampleFix":"// before\nvar gos = new GameObject[] { obj1, null, obj3 };\nPrefabUtility.ConvertToPrefabInstances(gos, root, settings, mode);\n// after\nvar gos = new[] { obj1, obj3 }.Where(g => g != null).ToArray();\nif (gos.Length > 0)\n    PrefabUtility.ConvertToPrefabInstances(gos, root, settings, mode);","handlingStrategy":"validation","validationCode":"var valid = plainGameObjects.Where(g => g != null).ToArray();\nif (valid.Length > 0)\n    PrefabUtility.ConvertToPrefabInstances(valid, root, settings, mode);","typeGuard":"static GameObject[] FilterValid(GameObject[] arr) => arr?.Where(g => g != null).ToArray() ?? Array.Empty<GameObject>();","tryCatchPattern":null,"preventionTips":["Use Unity null comparison (!=) which detects destroyed objects","Filter arrays right before use rather than at construction","Avoid caching GameObject references across frames without revalidation"],"tags":["unity","prefab","null-element","editor"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}