unity 程序做一个折叠菜单

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

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

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

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

cs 复制代码
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);
    }
}

效果如下:

相关推荐
向宇it2 小时前
【unity组件介绍】URP Decal Projector贴花投影器,将特定材质(贴花)投影到场景中的其他对象上。
游戏·3d·unity·c#·游戏引擎·材质
快乐觉主吖13 小时前
Unity网络通信的插件分享,及TCP粘包分包问题处理
tcp/ip·unity·游戏引擎
erxij2 天前
【游戏引擎之路】登神长阶(十八):3天制作Galgame引擎《Galplayer》——无敌之道心
游戏引擎
lizz312 天前
GAMES101 lec2-数学基础1(线性代数)
线性代数·游戏引擎·图形渲染
啊基米德2 天前
lua(xlua)基础知识点记录一
unity·lua·xlua
夜色。2 天前
Unity Android Logcat插件 输出日志中文乱码解决
android·unity
X-mj2 天前
Unity URP + XR 自定义 Skybox 在真机变黑问题全解析与解决方案(支持 Pico、Quest 等一体机)
unity·游戏引擎·xr
erxij2 天前
【游戏引擎之路】登神长阶(十七):Humanoid动画——长风破浪会有时,直挂云帆济沧海
游戏引擎
erxij2 天前
【游戏引擎之路】登神长阶(十九):3D物理引擎——岁不寒,无以知松柏;事不难,无以知君子
3d·游戏引擎
心疼你的一切3 天前
Unity 多人游戏框架学习系列一
学习·游戏·unity·c#·游戏引擎