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