我有一个包含Panel
作为孩子的用户界面Button
。该按钮具有脚本作为组件。脚本如下:
public GameObject Panel ;
OnMouseDown()
{
Panel.setActive(false);
StartCoroutine(takeShot());
}
private IEnumerator takeShot()
{
Application.CaptureScreenshot("my_img.png");
}
我遇到问题,因为按钮处于非活动状态,协程无法启动。
如何解决此问题?我可以在不使用SetActive(false)
的情况下隐藏面板吗?
答案 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);
}
}