方法1(获取全部子物体,无论子物体SetActive是否为true):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public List<GameObject> CH = new List<GameObject>();//储存物体的列表
// Start is called before the first frame update
void Start()
{
FindChild(this.gameObject);//找到节点下的所有子物体
}
void FindChild(GameObject child)
{
//利用for循环 获取物体下的全部子物体
for (int c = 0; c < child.transform.childCount; c++)
{
//如果子物体下还有子物体 就将子物体传入进行回调查找 直到物体没有子物体为止
if (child.transform.GetChild(c).childCount > 0)
{
FindChild(child.transform.GetChild(c).gameObject);
}
CH.Add(child.transform.GetChild(c).gameObject);
}
}
}
获取全部子物体后,可通过list列表对物体进行批处理;
如添加或移除其子物体的组件,判断其子物体是否有某个组件等等。
方法二(推荐):文章来源:https://www.toymoban.com/news/detail-544471.html
transform.GetComponentsInChildren<Transform>(); //无法获取SetActive为false的子物体
transform.GetComponentsInChildren<Transform>(true); //获取全部子物体,无论SetActive是否为true
该方法为Unity内置的API,会查找物体下对应类型的全部组件;
(注意:此方法会查找到本身的Transform)文章来源地址https://www.toymoban.com/news/detail-544471.html
到了这里,关于Unity中获取一个物体下所有的子物体的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!