【问题标题】:Set child game object as active将子游戏对象设置为活动
【发布时间】:2016-03-03 10:29:02
【问题描述】:

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

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

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

GameObject win;
GameObject scoreboard;

Start():

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

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

如果不是这样,我做了一个叫做重置的方法:

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

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

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

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

    }

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

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    “注意:我觉得我的问题是分配 win 一个非活动对象,但我可能是错的。”

    完全正确!

    它不会找到非活动对象

    解决方案!

    使用公共变量——将它拖到检查器中

    【讨论】:

    • 我需要在开始时使用查找吗?
    • 不,不要使用查找。只需使用公共和“拖动”!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多