如何在选定的GameObject下方获取GameObject的脚本? (Unity2D)(C#)

时间:2019-02-19 05:45:34

标签: c# unity3d

我试图在离开时在另一个对象(称为腔室)中设置一些变量。但是我似乎无法从场景中的许多特定对象中访问该脚本。我收到“未设置为对象的实例”错误。

请注意,参议员通过ID(整数)和名称(字符串)“知道”他所在的房间。商会还“知道”那里有一位参议员,但谁也不知道。我需要在参议员对象离开时清理房间,但是我无法控制该特定房间的脚本。

编码如下:

            // Do Work
            rbSenator.transform.position = newPos;
            Senator senatorSc = rbSenator.GetComponent<Senator>();
            originChamberName = senatorSc.GetInChamber();
            goChamber = GameObject.Find(originChamberName);
            Chamber originSc = goChamber.GetComponent<Chamber>();  //******************************** error
            originSc.FreeSeat(originChamber, senatorSeat);
            // Do Work

2 个答案:

答案 0 :(得分:0)

您可能是任务rbSenator GameObject。 让我知道您是否正在通过检查器分配rbSenator GameObject? 如果是,则在运行时检查Inspector中的rbSenator字段。 注意:在运行时,有时团结会导致字段为空。

答案 1 :(得分:0)

如果只有一个房间是该对象的孩子,则可以使用GetComponentInChildren<TypeOfYourRoom>() 如果有多个,则使用for循环查找您想要的名称或名称