不能使用(CanvasRenderer.cull)函数使图像gameObject不可见

时间:2018-07-17 11:52:54

标签: c# unity3d

因此,使用以下代码,我试图使两个图像的可见性消失。但是添加到画布上的图像不会改变可见性。

这是简单的代码:

public GameObject g;
public GameObject ga;

// Use this for initialization
void Start () {

    g.GetComponent<CanvasRenderer>().cull = false;

    ga.GetComponent<CanvasRenderer>().cull = false;


}

此处g和ga由编辑器分配。并且该脚本正在执行,因为它也已附加到游戏对象上。

这是屏幕截图之前和之后的场景,因为场景保持不变: enter image description here

enter image description here 更新-我不想使其处于非活动状态。 更多信息-我想在这些图像后面放置一些UI元素,以便使图像不可见,并在可能的情况下使canvas对象保持活动状态。谢谢。

2 个答案:

答案 0 :(得分:3)

在Canvas下有两个Image,分别为“ Image”和“ Image(1)”,您想隐藏它们或使它们不可见而无需停用Canvas。

您有两个选择:

1 。停用“图片”和“图片(1)”。

找到持有两个图像的两个游戏对象

GameObject imgObj1 = GameObject.Find("Image");
GameObject imgObj2 = GameObject.Find("Image (1)");

停用/隐藏它们

imgObj1.SetActive(false);
imgObj2.SetActive(false);

2 。禁用该组件。使“画布”下的图像无效的组件实际上是ImageRawImage组件。

找到持有两个图像的两个游戏对象

GameObject imgObj1 = GameObject.Find("Image");
GameObject imgObj2 = GameObject.Find("Image (1)");

从每个获取图像或RawImage组件

Image img1 = imgObj1.GetComponent<Image>();
Image img2 = imgObj2.GetComponent<Image>();

禁用/隐藏它们

img1.enabled = false;
img2.enabled = false;

答案 1 :(得分:2)

API说

  

指示是否忽略此渲染器发出的几何。

布尔不是真的吗?

您不能使用

this.gameObject.SetActive(false);

要禁用游戏对象并使它不可见?