You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
| 
								 
											1 year ago
										 
									 | 
							
								using System.Collections;
							 | 
						||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						||
| 
								 | 
							
								using UnityEngine;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public class BoxColliderSerializationFixer : MonoBehaviour
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    [System.Serializable]
							 | 
						||
| 
								 | 
							
								    public struct ColliderData {
							 | 
						||
| 
								 | 
							
								        public BoxCollider collider;
							 | 
						||
| 
								 | 
							
								        public Vector3 size;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [SerializeField]
							 | 
						||
| 
								 | 
							
								    private List<ColliderData> colliderSizes = new List<ColliderData>();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [ContextMenu("Save Colliders")]
							 | 
						||
| 
								 | 
							
								    public void SaveColliderSizes() {
							 | 
						||
| 
								 | 
							
								        colliderSizes.Clear();
							 | 
						||
| 
								 | 
							
								        SaveColliderSizesRecursive(transform);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if UNITY_2022_1_OR_NEWER
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								    public void Start() {
							 | 
						||
| 
								 | 
							
								        ApplyColliderSizesRecursive();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private void SaveColliderSizesRecursive(Transform currentTransform) {
							 | 
						||
| 
								 | 
							
								        BoxCollider[] boxCollider = currentTransform.GetComponents<BoxCollider>();
							 | 
						||
| 
								 | 
							
								        if(boxCollider != null && boxCollider.Length > 0) {
							 | 
						||
| 
								 | 
							
								            for(int i = 0; i < boxCollider.Length; i++) {
							 | 
						||
| 
								 | 
							
								                ColliderData data = new ColliderData {
							 | 
						||
| 
								 | 
							
								                    size = boxCollider[i].size,
							 | 
						||
| 
								 | 
							
								                    collider = boxCollider[i]
							 | 
						||
| 
								 | 
							
								                };
							 | 
						||
| 
								 | 
							
								                colliderSizes.Add(data);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        foreach(Transform child in currentTransform) {
							 | 
						||
| 
								 | 
							
								            SaveColliderSizesRecursive(child);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [ContextMenu("Apply Colliders")]
							 | 
						||
| 
								 | 
							
								    public void ApplyColliderSizesRecursive() {
							 | 
						||
| 
								 | 
							
								        //Debug.Log("Applying Collider  Resizes: This is a fix to a Unity Error where box collider sizes are not saved properly when downloading a scene from Unity 2022 or higher on a project from 2021 or lower. ");
							 | 
						||
| 
								 | 
							
								        foreach(var collider in colliderSizes) {
							 | 
						||
| 
								 | 
							
								            if(collider.collider != null)
							 | 
						||
| 
								 | 
							
								                collider.collider.size = collider.size;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |