{"record":{"id":"02104e7038348266","repo":"Unity-Technologies/UnityCsReference","slug":"one-or-more-transforms-are-null","errorCode":null,"errorMessage":"One or more transforms are null","messagePattern":"One or more transforms are null","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/Inspector/TransformUtils.cs","lineNumber":43,"sourceCode":"            return GetConstrainProportions(new []{transform});\n        }\n\n        public static bool GetConstrainProportions(Transform[] transforms)\n        {\n            return Selection.DoAllGOsHaveConstrainProportionsEnabled(transforms);\n        }\n\n        public static void SetConstrainProportions(Transform transform, bool enabled)\n        {\n            SetConstrainProportions(new[] { transform }, enabled);\n        }\n\n        public static void SetConstrainProportions(Transform[] transforms, bool enabled)\n        {\n            foreach (var t in transforms)\n            {\n                if (t == null)\n                    throw new ArgumentNullException(\"transform\", \"One or more transforms are null\");\n            }\n\n            ConstrainProportionsTransformScale.SetConstrainProportions(transforms, enabled);\n        }\n    }\n}\n","sourceCodeStart":25,"sourceCodeEnd":50,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/Inspector/TransformUtils.cs#L25-L50","documentation":"Thrown by TransformUtils.SetConstrainProportions(Transform[]) when any element of the transforms array is null. The proportional-scaling feature needs valid Transform references for all targets.","triggerScenarios":"Calling SetConstrainProportions with an array containing a null Transform, e.g. from GetComponentsInChildren where some children are null, or a selection set with a destroyed transform.","commonSituations":"Multi-object transform editing where one selected object was destroyed mid-operation. Arrays built from LINQ that include nulls. Scripts caching transforms that later became null.","solutions":["Filter nulls out of the transforms array before calling SetConstrainProportions.","Use the single-Transform overload only for confirmed non-null transforms.","Re-query transforms fresh to avoid stale null references."],"exampleFix":"// before\nTransformUtils.SetConstrainProportions(transforms, true);\n\n// after\nvar valid = transforms.Where(t => t != null).ToArray();\nif (valid.Length > 0)\n    TransformUtils.SetConstrainProportions(valid, true);","handlingStrategy":"validation","validationCode":"bool ok = transforms != null && transforms.All(t => t != null);","typeGuard":"static Transform[] FilterTransforms(Transform[] ts) =>\n    ts?.Where(t => t != null).ToArray() ?? Array.Empty<Transform>();","tryCatchPattern":null,"preventionTips":["Strip nulls before calling.","Re-query transforms to avoid stale references."],"tags":["unity","editor","transform","null-check","validation"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}