forked from zxl/LaboratoryProtection
56 lines
1.1 KiB
C#
56 lines
1.1 KiB
C#
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
public class ColliderSetter : BaseBehaviour
|
|
{
|
|
#if UNITY_EDITOR
|
|
public GameObject[] roots;
|
|
public MeshRenderer[] meshRenderers;
|
|
|
|
void Start()
|
|
{
|
|
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
|
|
[ContextMenu("Init")]
|
|
public void Init()
|
|
{
|
|
var tempList = new List<MeshRenderer>();
|
|
foreach (var item in roots)
|
|
{
|
|
var meshRenderers = item.GetComponentsInChildren<MeshRenderer>(true);
|
|
foreach (var x in meshRenderers)
|
|
{
|
|
tempList.Add(x);
|
|
}
|
|
}
|
|
this.meshRenderers = tempList.ToArray();
|
|
foreach (var item in meshRenderers)
|
|
{
|
|
if (item.gameObject.GetComponent<MeshCollider>() == null)
|
|
{
|
|
item.gameObject.AddComponent<MeshCollider>();
|
|
}
|
|
}
|
|
}
|
|
|
|
[ContextMenu("Remove")]
|
|
public void Remove()
|
|
{
|
|
foreach (var item in meshRenderers)
|
|
{
|
|
if (item.gameObject.TryGetComponent<MeshCollider>(out var meshCollider))
|
|
{
|
|
Destroy(meshCollider);
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
}
|