将子游戏对象设置为活动

时间:2016-03-03 01:52:58

标签: c# unity3d

所以,我有一个在游戏开始时处于非活动状态的游戏对象。所以,我把它放在一个在游戏开始时处于活动状态的父对象中。启动父对象的活动状态为Scoreboard,其非活动子项称为Win。 我想这是因为我收到了这个错误:

  

对象引用未设置为对象的实例。

我现在正在做的不正常工作是在开始时为scoreboardwin变量分配值,如下所示:(在start方法之前)

GameObject win;
GameObject scoreboard;

Start()

scoreboard = GameObject.Find("Scoreboard");
win = GameObject.Find("/Scoreboard/Win");

注意:我觉得我的问题是将win指定为非活动对象,但我可能错了。

如果不是,我做了一个名为Reset的方法:

void Reset()
{
    WorldController.IsRunning = false;
    win.SetActive(true);
}

WorldController.cs处理世界和其他事物的速度,因为我的游戏是跑步者。问题不在这里这个脚本运行良好。

我在OnCollisionEnter(Collision collision)内调用了重置方法 就在这里:

 if (collision.collider.tag == "Obstacles")
    {
        hits++;
        lives--;
        L4txt.text = "Lives: " + lives;
        if (hits == 3)
        {
            Reset();
        }

    }

hitslives是与问题无关的得分值(int)。

1 个答案:

答案 0 :(得分:1)

"注意:我觉得我的问题是将win分配为非活动对象,但我可能错了。"

EXACTLY!

它无法找到无效的对象

解!

使用公共变量 - 在检查器中拖动它