Unity UGUI动态创建按钮列表

11 篇文章 1 订阅

Unity UGUI动态创建按钮列表并赋予按钮点击事件,思路是:先在UI上拖放一个Button,然后动态克隆这个Button。

实现方法:在Canvas放置一个Image控件,一个Panel(命名为Panel_Button),一个Button,一个Scrollbar,关系如下图:

Button是我们克隆的对象,不需要显示出来,所以scale设置为0:

为Panel_Button添加Vertical Layout Group组件,设置如下:

Scrollbar设置Direction为Bottom To Top,移动到Panel_Button右侧:

为Image添加Scroll Rect组件,Content赋值为Panel_Button,勾选Vertical,取消Horizontal,Movement Type设置为Unrestricted:

为Image创建Mask组件:

代码部分:

新建AddButton.cs并挂载到Canvas下面:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class AddButton : MonoBehaviour
{
    public GameObject go;

    // Start is called before the first frame update
    void Start()
    {
        int btnPos = 0; //第一个Button的Y轴位置
        int btnHeight = 30; //Button的高度
        int btnCount = 100; //Button的数量

        GameObject panel_button = GameObject.Find("Panel_Button");
        var rectTransform = panel_button.transform.GetComponent<RectTransform>();
        panel_button.transform.localPosition = new Vector3(0, 0-(((btnHeight * btnCount)/2)-(rectTransform.rect.height/2)), 0);
        rectTransform.sizeDelta = new Vector2 (rectTransform.rect.width, btnHeight * btnCount);

        for(int i = 0; i < btnCount; i++)
        {
            string text = i.ToString();

            GameObject goClone = Instantiate(go);
            goClone.transform.parent = panel_button.transform;
            goClone.transform.localScale = new Vector3(1, 1, 1);    //由于克隆的Button缩放被设置为0,所以这里要设置为1
            goClone.transform.localPosition = new Vector3(0, btnPos, 0);
            goClone.transform.Find("Text").GetComponent<Text>().text = text;
            goClone.GetComponent<Button>().onClick.AddListener
            (
                () =>
                {
                    Click(text);    //添加按钮点击事件
                }
            );

            //下一个Button的位置等于当前减去他的高度
            btnPos = btnPos - btnHeight;
        }
    }
    
    void Click(string text)
    {
        Debug.Log(text);
    }
}

最终效果:

点击事件:

 

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Unity UGUI 列表是一种常见的 UI 控件,用于展示类别、选项或者数据。它通常由一个滚动视图组成,包含一个或多个列表项,每个列表项包含显示内容、图标和按钮。 在 Unity 中,实现列表通常需要以下步骤: 1. 创建一个滚动区域并设置相关参数,如大小、位置、滚动方向等等。 2. 在滚动区域内创建列表项,通常使用一个 prefab 来实现。 3. 让列表项拥有响应鼠标事件的组件,通常是按钮或 Toggle 组件。 4. 定义列表项的数据结构,如包含名称、描述、图标等属性。 5. 将数据与列表项绑定,使得列表项能够根据数据源的变化自动更新。 6. 定义列表项的样式,如字体、颜色、对齐方式等等。 7. 编写列表项的逻辑代码,处理用户点击触发的事件。 总之,Unity UGUI 列表是一种非常常见和实用的 UI 控件,可以用于许多不同的场景,如游戏菜单、设置界面、排行榜等等。有了列表的支持,用户可以更加便捷地浏览和操作大量的信息。 ### 回答2: Unity UGUI列表是一个UI组件,它允许开发者在游戏设计中创建各种不同类型的列表。在列表中,开发者可以显示一系列项目,用于展示各种信息和元素,例如角色列表、任务列表、排行榜等。 这个组件提供了一些控制选项,例如滚动条、滑动速度、自动布局等。开发者可以使用这些选项来控制列表的行为,使其更接近预期的效果。列表还可以支持不同的布局方式,例如网格布局、表格布局、平铺布局等,以便显示不同格式的项目。 Unity UGUI列表还允许开发者自定义项目的外观和交互。每个项目都可以选择不同的背景图片、字体、颜色和图标等。开发者还可以在每个项目上定义按钮事件或其他交互事件,例如打开一个菜单、播放动态内容等。 总的来说,Unity UGUI列表是一个很有用的UI组件,它可以简化游戏设计中的列表创建过程,并提供了灵活的控制和交互选项。开发者可以利用它来创建丰富的游戏UI,为玩家提供更好的交互和用户体验。 ### 回答3: Unity UGUI 列表Unity 引擎中的一个 UI 元素,用于显示和控制列表中的项目。列表通常用于显示大量的数据,如图像、文本或按钮Unity UGUI 中的列表组件支持选择、滚动和无限滚动功能。列表组件可以通过在游戏对象中添加 Scroll View、Viewport 和 Content 三个组件来实现。Scroll View 是列表的外壳,Viewport 是显示列表的区域,Content 是列表中的项目。在 Content 中,通过使用 Layout Group 和 Content Size Fitter 来控制列表中的项目排列和大小。 Unity UGUI 列表可以和数据绑定一起使用,通过数据绑定可以动态地更新列表中的项目。例如,在游戏中选择一种角色后,可以通过数据绑定将角色属性动态地绑定到列表中的项目,从而更新列表中的显示内容。列表组件还支持使用导航组件来快速地在列表中导航。在导航组件中,可以使用键盘或鼠标来快速地选择列表中的项目。 Unity UGUI 列表是游戏开发中非常重要的一个元素,它可以用来创建各种类型的列表,如任务列表、道具列表等。在使用列表组件时,需要仔细地考虑列表的设计和布局,以便用户可以轻松地使用列表。使用 Unity UGUI 列表可以使游戏界面变得更加直观和易于操作,增强游戏的可玩性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值