【问题标题】:Setup hide / unhide GameOjbect in unity统一设置隐藏/取消隐藏 GameOjbect
【发布时间】:2015-10-14 12:42:42
【问题描述】:

我正在尝试在 Unity 中设置一个简单的隐藏和取消隐藏游戏对象,但似乎无法让我的编码正常工作。到目前为止我写的有什么问题。

#pragma strict

public var myObject :GameObject;

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

    {
        gameObject.SetActive(true);

    }


}

【问题讨论】:

  • gamedev.stackexchange.com 可能是一个更好的提问地点(也可以查看answers.unity3d.com,这里的社区速度很快,而且可能比来自 SO 的人更了解 Unity3D)!无论如何,您这里的代码只是为了取消隐藏游戏对象,对吧?

标签: unity3d show-hide gameobject


【解决方案1】:

你去,这应该可以解决你的问题。 http://answers.unity3d.com/questions/7776/how-to-make-an-gameobject-invisible-and-disappeare.html 祝你好运。

您可以通过禁用 MeshRenderer 组件来关闭游戏对象的渲染,例如

GetComponent(MeshRenderer).enabled = false;

您可以完全禁用游戏对象,方法是使其处于非活动状态, 例如

gameObject.active = false;

【讨论】:

  • 不要只放链接,还要贴那个帖子的代码!如果帖子消失,链接将不可用!
  • 没问题,我一直在这样做,被标记和东西.. 学习艰难的方式啊啊啊! :)
【解决方案2】:

试试这个代码而不是 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

【讨论】:

  • 是的,游戏对象中确实有子对象。也许这就是我无法隐藏和取消隐藏游戏对象的原因。我可以看到网格渲染器复选框已关闭,但网格不会重新出现。
  • 您只是想隐藏对象还是真的将其设置为非活动状态?这些不是一回事 - 我给你的代码有效吗?
  • 我只是想隐藏和取消隐藏游戏对象。就是它。
【解决方案3】:

GameObject 在设置为非活动状态后不会运行脚本。这本质上意味着它无法运行脚本以再次将自己设置为活动状态。必须是外部来源使其再次处于活动状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多