如何解决如何通过C#Unity中的代码隐藏画布
(C#/ Unity的新手,所以这可能是一个愚蠢的问题,有一种简单的解决方法)
每当我用枪装ADS时,我都试图隐藏用作十字线的画布。我已经搜索了如何执行此操作,但在ADSing时它仍然没有隐藏画布。
如何解决此问题,或者有更简单的方法吗?
if (ISADS == true) //if ADS is true
{
Debug.Log(ISADS);
GameObject.Find("AK-47").GetComponent<Canvas>().enabled = false; //hide the canvas (The crosshair)
GameObject.Find("Pistol").GetComponent<Canvas>().enabled = false; // same with Pistol
GameObject.Find("870_Shotgun").GetComponent<Canvas>().enabled = false; // same with Shotgun
}
else
{
Debug.Log(ISADS);
GameObject.Find("AK-47").GetComponent<Canvas>().enabled = true; //else (if you're not ADSing) show the canvas
GameObject.Find("Pistol").GetComponent<Canvas>().enabled = true; // same with Pistol
GameObject.Find("870_Shotgun").GetComponent<Canvas>().enabled = true; // same with Shotgun
}
解决方法
有两种建议的方法:
-
设置
gameObject.SetActive(false)
-
或将CanvasGroup组件添加到Canvas。然后,您可以编辑3个不同的值,分别称为alpha,intractable和blockraycast。 IE
GameObject.Find("AK-47").GetComponent<CanvasGroup>().alpha = 0
您的代码是否在更新功能内?如果没有,那可能就是为什么您的编码无法正常工作的原因。它应该可以在启动功能上运行,但出于故障排除的目的,建议让它在更新功能内运行。
还有其他游戏对象的AK-47,手枪和870_Shotgun儿童游戏对象吗?这可能就是为什么使用gameobject.find()无法找到团结的原因。 Unity试图在同一级别上找到游戏对象,而您正在通过脚本进行调用(如果有意义)。
我建议使用以下伪代码
gameobject.find(“ this.gameobject / child / grand-child”)
或者您可以使用transform.find()使其更容易。让我知道它是否有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。