从脚本中统一隐藏UI面板

时间:2015-02-27 20:37:15

标签: unity3d unityscript

我有一个包含Panel作为孩子的用户界面Button。该按钮具有脚本作为组件。脚本如下:

public GameObject Panel ;
OnMouseDown()
{
  Panel.setActive(false);

  StartCoroutine(takeShot());
}
private IEnumerator takeShot()
{
   Application.CaptureScreenshot("my_img.png");
 }

我遇到问题,因为按钮处于非活动状态,协程无法启动。

如何解决此问题?我可以在不使用SetActive(false)的情况下隐藏面板吗?

2 个答案:

答案 0 :(得分:2)

是的我假设您使用的是最新版本的统一UI。

您想要使用canvas groups。将画布组附加到您的父对象panel,在代码中访问canvas group component并将其alpha设置为0,无论您的触发器是什么。这会隐藏canvas元素及其所有子元素,但仍在场景中处于活动状态。将其重置为1以使其再次可见。遗憾的是,您仍然可以与它进行交互,因为它在技术上仍然在场景中,因此您可以使用Renderer.enabled并将其设置为过误来解决此问题。这会更新它但不会绘制它。 SetActive完全停止了它。

希望这可以解决问题。

答案 1 :(得分:0)

我一直在与同样的问题作斗争。但是,我采用了一个具有相同效果的不同答案。我所做的是访问RectTransform组件,然后通过缩小它来隐藏它。

    public RectTransform Panel;

        void Update ()
        {       
            if(Input.GetButtonUp("Fire1"))
            {            
                Panel.localScale = new Vector3(1, 1);
            }
            if(Input.GetButtonUp("Fire2"))
            {
                Panel.localScale = new Vector3(0, 0);
            }   
}