如何检查x是否是数组y中任何对象的子对象



我正在创建一个系统,在这个系统中,效果被放置在设定半径内的每个对象上,但我发现效果同时被放置在对象的子对象和其父对象(例如敌人和敌人头(上。当我意识到孩子有可能在半径内,但父母没有,所以我不能直接从数组中删除孩子。我该如何检查孩子的父母是否在数组中,这样我就不能对其应用效果?(或任何其他解决问题的方法(

我知道我需要使用isChildOf,但我对它以及如何应用它的了解非常有限。我想不出任何方法来解决这个问题,真的需要解决它,到目前为止,我在这个问题上进展甚微,也没有尝试太多来解决它。

如有任何帮助,我们将不胜感激,谢谢。

有几种方法可以实现这一点:

第一种选择:如果你只想把这个效果放在敌人身上,你可以检查标签,只把这个效果应用到带有敌人标签的物体上:

if (objectToCheck.CompareTag("Enemy"))
{
// code to apply
}

其他选项:检查对象是否有父对象

Transform parent = objectToCheck.transform.parent;
if (parent == null)
{
// Do your effect code
}

如果您想将效果应用于radius中子对象的父对象,那么child.transform.parent将为您提供子对象的母对象。如果您想检查x是否是数组y中的子项,那么获取子项(x(的父项,并检查该父项是否存在于数组y中。https://docs.unity3d.com/ScriptReference/Transform-parent.html

相关内容

最新更新