C# FindObjectOfType-如何在OnTiggerStay中正确写入以检测此对象

C# FindObjectOfType-如何在OnTiggerStay中正确写入以检测此对象,c#,unity3d,collision-detection,C#,Unity3d,Collision Detection,我需要使用空脚本组件作为标记(因为在Unity中,我们只能向对象添加一个标记,我需要多个标记)。然后,在另一个对象脚本中,我想通过“tag”=该空脚本的名称来查找第一个对象。所以我使用了FindObjectOfType(),但不知道如何在OnTiggerStay中正确使用它 private void OnTriggerStay(Collider other) { if (other == GameObject.FindObjectOfType<First>())

我需要使用空脚本组件作为标记(因为在Unity中,我们只能向对象添加一个标记,我需要多个标记)。然后,在另一个对象脚本中,我想通过“tag”=该空脚本的名称来查找第一个对象。所以我使用了FindObjectOfType(),但不知道如何在OnTiggerStay中正确使用它

    private void OnTriggerStay(Collider other)
{
    if (other == GameObject.FindObjectOfType<First>())
    {
        CheckPos1 = true;
    }

}
private void OnTriggerStay(碰撞器其他)
{
if(other==GameObject.FindObjectOfType())
{
CheckPos1=true;
}
}
似乎不起作用,因为CheckPos1不会更改为“true”。

private void OnTriggerStay(Collider other)
private void OnTriggerStay(Collider other)
{
    CheckPos1 = other.GetComponent<First>();
}
{ CheckPos1=other.GetComponent(); }
要了解其工作原理,请阅读本参考资料:

在调用此方法的对象中查找脚本组件


从整个场景返回类型为
first
的第一个对象,而不是从碰撞返回,因此,如果有多个对象具有
first
组件,则该方法不适用于您的情况。而且它在整个场景中的搜索速度要慢得多。

非常感谢Sergey。我想我更明白了! 我找到了解决问题的方法,只是将对象作为子对象添加到我的主对象中,并将标记添加到此对象中。在我的游戏中,在每个关卡中,只有一个对象带有“First”标记,然后是另一个“Second”,Third,等等。。最多7个,我想。这是一个益智游戏,我正在检查你们是否通过在正确的位置放置砖块来解决这个难题:)