可以使用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如何不用SetActivefalse方法通过dropdown控制三个panel的隐藏与显示

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

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