在Unity中设置隐藏/显示游戏物体

3

我正在尝试在Unity中设置一个简单的隐藏和显示游戏对象,但似乎无法使我的编码正确运行。目前我写的有什么问题呢?

#pragma strict

public var myObject :GameObject;

    if (GUI.Button(new Rect(1120,930,100,50),"3D MODEL"))

    {
        gameObject.SetActive(true);

    }


}

也许http://gamedev.stackexchange.com/是一个更好的提问地点(还可以查看http://answers.unity3d.com,这里的社区反应很快,也许比SO上的人更了解Unity3D)!无论如何,你在这里的代码只是为了显示游戏对象,对吧? - Alexandre Beaudet
3个回答

3

不仅要放链接,还要发布该帖子的代码!如果帖子消失了,链接将无法使用! - Alexandre Beaudet
没问题,我经常这样做,被标记了什么的...学习的方式有点艰难啊啊! :) - Alexandre Beaudet

0
一个 GameObject 一旦被设置为非活动状态,就不会再运行脚本。这意味着它不能运行脚本来重新激活自己,必须由外部源将其重新激活。

0

请尝试使用这段代码替换SetActive:

renderer.enabled = true; (to show the game object)

renderer.enabled = false; (to hide the game object)

如果游戏对象里面有子物体,这段代码可能会有帮助:
function Hide() {
    if (#condition#) {
        ToggleVisibility();
    }
}

function ToggleVisibility() {
    // toggles the visibility of this gameobject and all it's children
    var renderers = gameObject.GetComponentsInChildren.();
    for (var r : Renderer in renderers) {
        r.enabled = !r.enabled;
    }
}

(第二段代码来自:http://answers.unity3d.com/questions/14165/show-and-hide-a-prefab-or-gameobject.html


是的,这个游戏对象确实有子对象。可能这就是我无法隐藏和显示游戏对象的原因。我可以看到网格渲染器的复选框被关闭了,但是网格并没有重新出现。 - Coder
你只是想隐藏对象还是真的将其设置为非活动状态?这两者并不相同。我给你的代码有效吗? - Alexandre Beaudet
我只是想隐藏和显示游戏对象。就这样。 - Coder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接