2015-10-14 57 views
0

我试图在Unity中设置一个简单的隐藏和取消隐藏gameobject,但似乎无法让我的代码正常工作。迄今为止我所写的内容有什么问题。安装程序在Unity中隐藏/取消隐藏GameOjbect

#pragma strict 

public var myObject :GameObject; 

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

    { 
     gameObject.SetActive(true); 

    } 


} 
+0

http://gamedev.stackexchange.com/可能是一个更好的地方问(也可以查看http://answers.unity3d.com,这里的社区速度很快,也许知道更多关于Unity3D的知识,而不是来自SO的人)!无论如何,你的代码只是为了隐藏游戏对象,对吧? –

回答

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

+0

是的,游戏对象确实有孩子。也许这是我无法隐藏和取消隐藏gameobject的原因。我可以看到网格渲染器复选框关闭,但网格不会重新出现。 – Coder

+0

你只是想隐藏对象还是真的把它设置为不活动?这些不是同一件事 - 我给你的代码工作过吗? –

+0

我只是想隐藏并取消隐藏gameobject。那它。 – Coder

1

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

可以通过禁用其MeshRenderer部件,例如关闭一个游戏对象的渲染

GetComponent(MeshRenderer).enabled = false; 

您可以禁用一个游戏物体完全通过使其无活性的,例如

gameObject.active = false; 
+0

不只是把链接,也张贴该帖子的代码!如果帖子消失,链接将不可用! –

+0

你是对的,我的坏对我来说这是新的:) –

+0

没问题,我一直在做这很多,被标记和东西..学习困难的方式啊啊! :) –

0

一个GameObject一旦设置未激活时没有运行的脚本。这固有地意味着它不能运行脚本来将其自身重新设置为活动状态。外部来源必须是使其再次活跃的内容。