unity 遍历所有组件中有特定的脚本
时间: 2023-09-05 12:08:07 浏览: 96
可以使用GameObject的GetComponentsInChildren方法来获取指定类型的脚本组件,遍历所有子物体中有特定脚本的组件,示例代码如下:
```
using UnityEngine;
using System.Collections.Generic;
public class FindScriptsInChildren : MonoBehaviour
{
// 需要查找的脚本类型
public MonoBehaviour targetScript;
// 查找到的所有包含目标脚本的组件列表
private List<MonoBehaviour> targetComponents = new List<MonoBehaviour>();
private void Start()
{
// 获取当前对象及其所有子物体中的所有目标脚本组件
GetTargetComponents(transform);
// 输出找到的组件数量
Debug.Log("Found " + targetComponents.Count + " components with target script.");
}
// 递归查找指定物体及其所有子物体中的指定脚本组件
private void GetTargetComponents(Transform parent)
{
// 查找当前物体中是否有目标脚本组件
MonoBehaviour[] components = parent.GetComponents<MonoBehaviour>();
foreach (MonoBehaviour component in components)
{
if (component.GetType() == targetScript.GetType())
{
targetComponents.Add(component);
}
}
// 递归查找子物体中的目标脚本组件
for (int i = 0; i < parent.childCount; i++)
{
Transform child = parent.GetChild(i);
GetTargetComponents(child);
}
}
}
```
阅读全文