Unity3D UGUI下拉菜单/Dropdown组件用法、总结

Chinar blog www.chinar.xin

Unity UGUI 完整系列教程 (Chinar中文图解)

Unity3D中UGUI实现下拉菜单


本文提供全流程,中文翻译

Chinar 的初衷是将一种简单的生活方式带给世人

使有限时间 具备无限可能

Chinar —— 心分享、心创新!

助力快速使用 UGUI 实现 下拉菜单

为初学者节省宝贵的时间,避免采坑!

Chinar 教程效果:
这里写图片描述



全文高清图片,点击即可放大观看 (很多人竟然不知道)


1

Intro —— 创建布局


Unity3D 重写Dropdown 组件、开启每次点选可用 (特殊需求 )

UGUI 最初是没有下拉菜单的组件的

后来更新加入后,用起来方便,可快速创建大量选择项,无需开发者自己写脚本实现

1. 创建下拉菜单模板

右键层次列表→ UI Dropdown

即可完成一个下拉菜单的创建
举个例子
这里写图片描述


2. 设置属性

Unity 会自动帮我们创建一个下拉菜单的模板、并且添加好 Dropdown 组件,创建好我们需要的一切基本设置

我们需要做的就是,设置我们需要的属性、以及功能即可

将我们的脚本、需要的选择项、UI选项设置好就可以用了
举个例子
这里写图片描述


2

ChinarDemo Script —— Chinar演示脚本


这里提供一个便于理解的演示脚本,仅用于测试

贴心的 Chinar 为初学者提供了 动态添加监听事件的方法

如果 动态添加监听事件,外部就无需再做手动绑定添加了,否则会重复哦!


GameObject.Find("Dropdown").GetComponent<Dropdown>().onValueChanged.AddListener(ConsoleResult);

举个例子

using UnityEngine;
using UnityEngine.UI;


/// <summary>
/// Chinar例子脚本,用以输出
/// </summary>
public class ChinarDemo : MonoBehaviour
{
    void Start()
    {
        //贴心的 Chinar 为新手提供了 代码动态绑定的方法,如果通过代码添加监听事件,外部就无需再做添加
        //GameObject.Find("Dropdown").GetComponent<Dropdown>().onValueChanged.AddListener(ConsoleResult);
    }


    /// <summary>
    /// 输出结果 —— 添加监听事件时要注意,需要绑定动态方法
    /// </summary>
    public void ConsoleResult(int value)
    {
        //这里用 if else if也可,看自己喜欢
        //分别对应:第一项、第二项....以此类推
        switch (value)
        {
            case 0:
                print("第1页");
                break;
            case 1:
                print("第2页");
                break;
            case 2:
                print("第3页");
                break;
            case 3:
                print("第4页");
                break;
            //如果只设置的了4项,而代码中有第五个,是永远调用不到的
            //需要对应在 Dropdown组件中的 Options属性 中增加选择项即可
            case 4:
                print("第5页");
                break;
        }
    }
}

3

Attentions —— 注意事项


注意事项:
1. 手动添加监听事件,需绑定动态方法(Unity会自动生成)
2. 设置自己需要的默认项,默认为 0 ,当下拉菜单弹起时,默认就是第一项
3. 下拉菜单的机制,就是已经被选中的选项,如果再次点击是不会调用函数方法的!!!
(也就是说,你已经选择了第一页,再次点击第一页,是不会调用任何函数的)`

举个例子
这里写图片描述


4

Test Result —— 最终测试结果


点击运行测试

请认真看输出结果:某一页为选中状态时,再次点击是不会调用任何函数的
举个例子
这里写图片描述


5

Extension —— 扩展 Dropdown

扩展 Dropdown 组件,开启被选择按钮,再次被点击仍然可执行回调函数

举个例子


Unity3D 重写下拉菜单/Dropdown组件、开启每个按钮点选可用

Unity UGUI 完整系列教程 (Chinar中文图解)


支持

May Be —— 开发者,总有一天要做的事!


拥有自己的服务器,无需再找攻略

Chinar 提供一站式《零》基础教程

使有限时间 具备无限可能!

先点击领取 —— 阿里全产品优惠券 (享受最低优惠)


Chinar 免费服务器、建站教程全攻略!( Chinar Blog )


Chinar

END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

  • 25
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
NullReferenceException: Object reference not set to an instance of an object Inventory.OnClickPickUp () (at Assets/Script/Inventory.cs:39) UnityEngine.Events.InvokableCall.Invoke () (at <ff7b004c24954ff98f68a709be4708c3>:0) UnityEngine.Events.UnityEvent.Invoke () (at <ff7b004c24954ff98f68a709be4708c3>:0) UnityEngine.UI.Button.Press () (at D:/Program Files/Unity/Hub/Editor/2019.4.14f1c1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:68) UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at D:/Program Files/Unity/Hub/Editor/2019.4.14f1c1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:110) UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at D:/Program Files/Unity/Hub/Editor/2019.4.14f1c1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:50) UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at D:/Program Files/Unity/Hub/Editor/2019.4.14f1c1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:261) UnityEngine.EventSystems.EventSystem:Update() (at D:/Program Files/Unity/Hub/Editor/2019.4.14f1c1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:377)
06-10

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值