unity 查找未激活物体

2015年01月31日 09:27 0 点赞 0 评论 更新于 2025-11-21 15:47

在Unity开发中,有时我们需要查找未激活的物体。下面将为大家详细分享如何查找和检测某个子物体,并给出主要代码。

代码使用说明

将以下函数添加到代码中,其中check参数代表要查询的父物体,name为要查找的子物体的名称。例如,使用return GetTransform(transform, "bone12"); 可以在当前物体的子物体中查找名为 bone12 的物体。

Unity3D脚本代码

Transform GetTransform(Transform check, string name)
{
// 遍历check物体的所有子物体
foreach (Transform t in check.GetComponentsInChildren<Transform>(true))
{
if (t.name == name)
{
return t;
}
// 递归调用,在子物体的子物体中继续查找
Transform result = GetTransform(t, name);
if (result != null)
{
return result;
}
}
return null;
}

代码解释

  • GetComponentsInChildren<Transform>(true):这个方法用于获取 check 物体的所有子物体的 Transform 组件,参数 true 表示会包含未激活的子物体。
  • 遍历这些子物体,如果找到名称匹配的子物体,则直接返回该子物体的 Transform
  • 对于每个子物体,还会递归调用 GetTransform 方法,在其自身的子物体中继续查找,直到找到目标物体或者遍历完所有子物体。
  • 如果最终没有找到匹配的物体,则返回 null

通过这种方式,我们可以在Unity中查找未激活的子物体。