通过脚本隐藏/取消隐藏Unity3D中的对象

通过脚本隐藏/取消隐藏Unity3D中的对象,unity3d,gameobject,Unity3d,Gameobject,我想在一切开始之前把我的部分场景隐藏起来, 假设我有一些ishiden(我正在尝试查找)属性,我在之前或场景的第一帧设置为true 在某个时刻,我想取消隐藏并触发动画,我知道如何触发动画。 我发现隐藏对象的唯一方法是将其设置为: SetActive(false); 它确实隐藏了,但是当我稍后在脚本中尝试使用 GameObject.Find("gameObjectName"); 它返回null。 那么,通过脚本隐藏或隐藏GameObject的正确方法是什么呢。 这不是网格,因此它没有网格渲染器

我想在一切开始之前把我的部分场景隐藏起来, 假设我有一些
ishiden
(我正在尝试查找)属性,我在之前或场景的第一帧设置为
true

在某个时刻,我想取消隐藏并触发动画,我知道如何触发动画。 我发现隐藏对象的唯一方法是将其设置为:

SetActive(false);
它确实隐藏了,但是当我稍后在脚本中尝试使用

GameObject.Find("gameObjectName");
它返回null。 那么,通过脚本隐藏或隐藏
GameObject
的正确方法是什么呢。
这不是
网格
,因此它没有网格渲染器。

使用渲染器。已启用

bool enabled;
Description

Makes the rendered 3D object visible if enabled.
示例代码:

public class ExampleClass : MonoBehaviour {
    void Show() {
        renderer.enabled = true;
    }
    void Hide() {
        renderer.enabled = false;
    }
    void HideChildren()
    {
         Renderer[] lChildRenderers=gameObject.GetComponentsInChildren<Renderer>();
         foreach ( Renderer lRenderer in lChildRenderers)
         {
              lRenderer.enabled=false;
         }
    }
    void ShowChildren()
    {
         Renderer[] lChildRenderers=gameObject.GetComponentsInChildren<Renderer>();
         foreach ( Renderer lRenderer in lChildRenderers)
         {
              lRenderer.enabled=true;
         }
    }


}
公共类示例类:单行为{
无效显示(){
renderer.enabled=true;
}
void Hide(){
renderer.enabled=false;
}
无效隐藏儿童()
{
Renderer[]lChildRenderers=gameObject.GetComponentsInChildren();
foreach(lChildRenderers中的渲染器lRenderer)
{
lRenderer.enabled=false;
}
}
void ShowChildren()
{
Renderer[]lChildRenderers=gameObject.GetComponentsInChildren();
foreach(lChildRenderers中的渲染器lRenderer)
{
lRenderer.enabled=true;
}
}
}

setactive不影响查找,检查对象名称是否正确且唯一这是名称:XwingScene他是唯一的。没有其他对象像这样调用,当我在设置SetActive(false)后尝试访问它时,它返回null`这不是网格,所以它没有网格渲染器。`你是说它有子对象,其中有网格吗?每个游戏对象都有一个渲染器?GameObject.renderer是每个游戏对象的一部分。但并非每个游戏对象都有渲染器,在这种情况下,渲染器为空。好消息是,任何可见的场景对象(如您所述)都必须具有渲染器。