检查对象是否处于活动状态

时间:2015-05-18 18:28:28

标签: c# unity3d

我想检查对象是否处于活动状态,是否我想要停用其他对象。这是我的方法。它不是最好的,但我只想让它工作。我有这种方法不正常,因为它只运行一次,即使我在update()中有它。这里需要一些帮助..

更新:问题是,当我选择选择变为真,并且因为另一个选择已经是真的,这个代码不起作用,现在我不知道我怎么能解决它..

public GameObject selectionTop;
public GameObject selectionBot;
public GameObject selectionSplash;
public GameObject selectionFloor;


// Use this for initialization
void Start () {

}
void Update (){
        Check ();
}

// Update is called once per frame
public void Check () {
    if (selectionTop.activeSelf == true) {
        selectionBot.SetActive(false);
        selectionSplash.SetActive(false);
        selectionFloor.SetActive(false);
    }else
    if (selectionBot.activeSelf == true) {
        selectionTop.SetActive(false);
        selectionSplash.SetActive(false);
        selectionFloor.SetActive(false);
    }else
    if (selectionSplash.activeSelf == true) {
        selectionTop.SetActive(false);
        selectionBot.SetActive(false);
        selectionFloor.SetActive(false);
    }else
    if (selectionFloor.activeSelf == true) {
        selectionTop.SetActive(false);
        selectionBot.SetActive(false);
        selectionSplash.SetActive(false);
    }
}

3 个答案:

答案 0 :(得分:3)

只有当其脚本所在的GameObject处于activeInHierarchy且脚本已启用时才会调用更新。我的猜测是你在其中一个GameObjects上有这个脚本被禁用,导致更新不被调用。

所以我会将这个脚本移动到另一个未使用"选择"游戏对象,以便始终调用更新。

答案 1 :(得分:0)

我不确定这是否是一个愚蠢的答案,我从来没有使用游戏sdk,只是看着代码......

    if(...)
    {
    }
    else if (...)
    {
    }

我总是看到它以这种方式编写,但也许只是我,你可以检查你的代码是否都使用调试器执行,如果不是,你可以使用Debug.Writeline来打印内容调试屏幕上的例程,以查看执行的代码。

答案 2 :(得分:0)

使用变量存储当前选择的内容。 然后,当进行新选择时,隐藏当前选择,然后调用check。

  • 或 -

制作隐藏所有物品的功能。每次都打电话。然后设置您想要激活的项目。