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#
		
	
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;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |