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);
    }
}

效果如下:

相关推荐
风酥糖14 小时前
Godot游戏练习01-第24节-多人游戏暂停菜单,游戏优化
游戏·游戏引擎·godot
Allen747420 小时前
ComfyUI 自动化生产 3D资产 工作流笔记
图像处理·opencv·unity·自然语言处理·3d模型生成·confyui
nnsix1 天前
Unity Windows11 打字中文显示不出来输入法的候选框
unity
SCLchuck1 天前
Godot 4 2D 物理引擎位置初始化踩坑:add_child() 和 position 到底谁先? (错误位置触发物理事件)
游戏引擎·godot·游戏开发·物理引擎
adogai1 天前
unity mcp接入 实现一句话生成游戏!
游戏·unity·游戏引擎
mxwin2 天前
Unity Shader 逐像素光照 vs 逐顶点光照性能与画质的权衡策略
unity·游戏引擎·shader·着色器
CDN3602 天前
游戏盾导致 Unity/UE 引擎崩溃的主要原因排查?
游戏·unity·游戏引擎
mxwin2 天前
Unity URP 全局光照 (GI) 完全指南 Lightmap 采样与实时 GI(光照探针、反射探针)的 Shader 集成
unity·游戏引擎·shader·着色器
mxwin2 天前
Unity URP 溶解效果基于噪声纹理与 clip 函数实现物体渐隐渐显
unity·游戏引擎·shader
CheerWWW2 天前
GameFramework——Download篇
笔记·学习·unity·c#