unity中查找hierarchy面板对象,包含隐藏对象。

时间: 2023-11-14 admin 维修知识

unity中查找hierarchy面板对象,包含隐藏对象。

unity中查找hierarchy面板对象,包含隐藏对象。

在初始化获取hierarchy面板对象的时候使用。
当使用GameObject.Find无法查找被隐藏的物体,在网上查找了一些方法发现都无法在运行模式下运行,根据查找到方法修改编写了俩方法放到脚本中可以直接使用,在运行状态下也可获取隐藏的物体。

  public static Transform TraverseAllObjects(string name){Transform s = null;try{// 获取场景中所有的根物体GameObject[] rootObjects = SceneManager.GetActiveScene().GetRootGameObjects();// 遍历所有根物体和它们的子物体foreach (GameObject rootObject in rootObjects){TraverseHierarchy(rootObject.transform, name ,ref s);}return s;}catch (System.Exception e) { return s; }}private static void TraverseHierarchy(Transform parent,string name ,ref Transform returnObj){try{if (parent.name == name){returnObj = parent;}}catch (System.Exception) { }// 遍历当前父物体下的所有子物体foreach (Transform child in parent){// 处理子物体,这里可以添加你的逻辑try{//  print(child.name+"   "+ name);if (child.name==name){returnObj=child;}          }catch (System.Exception){TraverseHierarchy(child, name,ref returnObj);}// 递归调用遍历子物体的子物体TraverseHierarchy(child, name, ref returnObj);}}