可以使用 CanvasGroup 组件来实现 Panel 的隐藏与显示,而不是使用 SetActive(false) 方法。

  1. 首先在每个 Panel 上添加 CanvasGroup 组件。

  2. 在 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;
    }
}
  1. 在 Inspector 中将 Dropdown 和三个 Panel 以及对应的 CanvasGroup 组件分别拖拽到对应的变量中。

这样,在 Dropdown 选择不同的选项时,就可以通过改变 CanvasGroup 组件的 alpha、interactable 和 blocksRaycasts 属性来实现 Panel 的隐藏与显示。其中,alpha 为 0 时表示隐藏,为 1 时表示显示;interactable 和 blocksRaycasts 都为 false 时,表示不可交互和不可阻挡射线,为 true 时则相反。

Unity Dropdown 控制 Panel 隐藏与显示:使用 CanvasGroup 替代 SetActive(false)

原文地址: https://www.cveoy.top/t/topic/nzMx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录