private void TryMovePostProcessVolumeAwayFromMainCamera() { if (Camera.main == null) { return; } if (_postProcessVolumeType == null) { return; } Component oldVolume = Camera.main.GetComponentInChildren(_postProcessVolumeType); if (!oldVolume) { return; } GameObject oldObject = oldVolume.gameObject; GameObject newObject = Object.Instantiate(oldObject); newObject.name = "Post Processing Volume"; newObject.tag = "Untagged"; foreach (Transform child in newObject.transform) { Object.DestroyImmediate(child.gameObject); } var newVolume = newObject.GetComponentInChildren(_postProcessVolumeType); foreach (Component c in newObject.GetComponents <Component>()) { if ((c == newObject.transform) || (c == newVolume)) { continue; } Object.DestroyImmediate(c); } Object.DestroyImmediate(oldVolume); _builder.Repaint(); Selection.activeGameObject = newObject; }