【问题标题】:How to get children objects from parent name如何从父名中获取子对象
【发布时间】:2021-07-21 03:18:58
【问题描述】:

我正在使用这段代码来查看用户是否将鼠标悬停在名为“townhall”hit.collider.gameObject.name == "townhall"的对象上

但是,我想看看用户是否将鼠标悬停在名为“townhall”的对象的孩子上

【问题讨论】:

  • 如果 townhall 是一个没有碰撞器的空游戏对象,那么它应该可以工作,如果没有,那么确保子对象上的碰撞器在那里。
  • @ken 不,它不会......如果它是一个空对象,那么首先就不会发生碰撞;)
  • 您是否尝试过通过parent 或将特定组件放在父对象上以便您可以通过GetComponentInParent 简单地搜索它?
  • @derHugo 我说的是有一个空的游戏对象作为父对象,然后带有碰撞器的对象将是子对象。

标签: c# unity3d raycasting


【解决方案1】:

如果父对象“townhall”上有特定的脚本(即 TownHall.cs),您可以做的是检查相关对象的父对象(hit.collider)是否具有该脚本。像这样的。

var townHall = hit.collider.GetComponentInParent<TownHall>();
if (townHall != null)
{
    // The hit object or one of its parents has the townhall script
    //
}

请注意,使用 GetComponentInParent 时,命中对象本身可以返回特定脚本。只需通过名称或其他决定因素检查它是否是市政厅对象。

【讨论】:

    【解决方案2】:

    也许这个可能会有所帮助, hit.collider.transform.parent.gameObject.name == "townhall"

    【讨论】:

    • 你可以跳过.collider.gameObject直接访问hit.transform.parent.name;)
    猜你喜欢
    • 2022-12-15
    • 2021-01-25
    • 2021-12-14
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 2017-11-23
    • 1970-01-01
    相关资源
    最近更新 更多