Unity如何不用SetActivefalse方法通过dropdown控制三个panel的隐藏与显示
可以使用CanvasGroup组件来实现Panel的隐藏与显示,而不是使用SetActive(false)方法。
-
首先在每个Panel上添加CanvasGroup组件。
-
在Dropdown的OnValueChanged事件中,添加以下代码:
public Dropdown dropdown;
public CanvasGroup panel1;
public CanvasGroup panel2;
public CanvasGroup panel3;
public void OnDropdownValueChanged(int index)
{
switch (index)
{
case 0:
panel1.alpha = 1f;
panel1.interactable = true;
panel1.blocksRaycasts = true;
panel2.alpha = 0f;
panel2.interactable = false;
panel2.blocksRaycasts = false;
panel3.alpha = 0f;
panel3.interactable = false;
panel3.blocksRaycasts = false;
break;
case 1:
panel1.alpha = 0f;
panel1.interactable = false;
panel1.blocksRaycasts = false;
panel2.alpha = 1f;
panel2.interactable = true;
panel2.blocksRaycasts = true;
panel3.alpha = 0f;
panel3.interactable = false;
panel3.blocksRaycasts = false;
break;
case 2:
panel1.alpha = 0f;
panel1.interactable = false;
panel1.blocksRaycasts = false;
panel2.alpha = 0f;
panel2.interactable = false;
panel2.blocksRaycasts = false;
panel3.alpha = 1f;
panel3.interactable = true;
panel3.blocksRaycasts = true;
break;
}
}
- 在Inspector中将Dropdown和三个Panel以及对应的CanvasGroup组件分别拖拽到对应的变量中。
这样,在Dropdown选择不同的选项时,就可以通过改变CanvasGroup组件的alpha、interactable和blocksRaycasts属性来实现Panel的隐藏与显示。其中,alpha为0时表示隐藏,为1时表示显示;interactable和blocksRaycasts都为false时,表示不可交互和不可阻挡射线,为true时则相反
原文地址: http://www.cveoy.top/t/topic/cN2x 著作权归作者所有。请勿转载和采集!