Unity Dropdown 控制 Panel 隐藏与显示:使用 CanvasGroup 替代 SetActive(false)
可以使用 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 时则相反。
原文地址: https://www.cveoy.top/t/topic/nzMx 著作权归作者所有。请勿转载和采集!