unity 程序做一个折叠菜单

发布于:2024-08-08 ⋅ 阅读:(121) ⋅ 点赞:(0)

第一次遇到这种需求,本来以为很难,没想到试了一下以后没啥难度,所以记录一下

首先新建一个scroll view,然后在content里面添加vertical layout group和content size fitter这两个组件。(vertical layout group 的 spacing要设置成10左右,这一步是关键)

然后在content里面放几个按钮,充当标题栏和内容栏

然后在脚本中给按钮赋值,这样就可以使用代码控制按钮了

public Button 标题;
public Button 内容1;
public Button 内容2;
public Button 标题2;
public Button 内容3;
public Button 内容4;

// Start is called before the first frame update
void Start()
{
    标题.onClick.AddListener(new UnityEngine.Events.UnityAction(ShowOrHideBtn));
    标题2.onClick.AddListener(new UnityEngine.Events.UnityAction(ShowOrHideBtn2));
}

// Update is called once per frame
void Update()
{
    
}

private void ShowOrHideBtn()
{
    if(内容1.gameObject.activeSelf)
    {
        内容1.transform.DOScaleY(0, 0.3f).OnComplete(() => { 内容1.transform.gameObject.SetActive(false); });
        内容2.transform.DOScaleY(0, 0.3f).OnComplete(() => { 内容2.transform.gameObject.SetActive(false); });
    }
    else
    {
        内容1.transform.gameObject.SetActive(true);
        内容1.transform.DOScaleY(1, 0.3f);

        内容2.transform.gameObject.SetActive(true);
        内容2.transform.DOScaleY(1, 0.3f);
    }
}

private void ShowOrHideBtn2()
{
    if (内容3.gameObject.activeSelf)
    {
        内容3.transform.DOScaleY(0, 0.3f).OnComplete(() => { 内容3.transform.gameObject.SetActive(false); });
        内容4.transform.DOScaleY(0, 0.3f).OnComplete(() => { 内容4.transform.gameObject.SetActive(false); });
    }
    else
    {
        内容3.transform.gameObject.SetActive(true);
        内容3.transform.DOScaleY(1, 0.3f);

        内容4.transform.gameObject.SetActive(true);
        内容4.transform.DOScaleY(1, 0.3f);
    }
}

效果如下:


网站公告

今日签到

点亮在社区的每一天
去签到