当前位置:网站首页>Unity3D邪门实现之GUI下拉菜单Dropdown设计无重复项
Unity3D邪门实现之GUI下拉菜单Dropdown设计无重复项
2022-06-25 06:39:00 【mudapao】
** Unity3D邪门实现系列为博主在实际开发过程中遇到一些需求,由于个人水平无法正经实现退而采用“歪道”实现同样的效果。**
该系列仅用于分享思路,若有错误或“多此一举”的地方,也请大家多多指正。
【总结】
利用按钮和下拉菜单结合的形式,点击按钮显示下拉菜单,实现菜单控制的同时没有重复项。
【具体流程】
U3D使用dropdown制作菜单效果,会出现菜单标题和项目重复的问题。即使更改了label,在运行时也会变为默认的第一个选项。
博主查了看了很多文章,主要是在菜单的样式上玩花样,没有提到这个重复的问题。因此决定采用与按钮控件配合的形式,将菜单标题和选项分开,只需轻松几步,即可换种方法“消除”重复项。
1.在项目中创建canvas画布,在canvas中创建菜单空对象方便管理,再在菜单对象中选择创建UI–button和UI–dropdown,根据需求编写dropdown的options。隐藏dropdown的label和arrow。
2.将dropdown控件拖到button上与button重合,修改button控件的文本为“菜单”。若菜单设计有颜色,注意按钮的颜色更改为透明,与环境融合。在button属性中增加鼠标点击事件,将dropdwon选为控制对象,Runtime only旁边的选择dropdown–show()。此时点击按钮即可展示菜单项目。

3.接下来可按照常规绑定脚本的方式对dropdown选项进行事件监听和反应。创建一个Script文件夹用于管理脚本,并在文件夹中创建menu脚本。并在menu脚本中编辑以下代码(case下可替换为相应反应事件):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Menu : MonoBehaviour
{
//实现多个菜单监听
public List<Dropdown> DropdownList;
public void EventListening()
{
switch (DropdownList[0].value)
{
case 0:
Debug.Log("宫爆鸡丁做好了");
break;
case 1:
Debug.Log("麻婆豆腐做好了");
break;
case 2:
Debug.Log("鱼香肉丝做好了");
break;
case 3:
Debug.Log("水煮肉片做好了");
break;
default:
break;
}
}
}
4.点击菜单对象,创建空对象,命名为MenuControl,并将刚刚创建的脚本拖入该对象中。
拖入脚本后会显示脚本中定义的变量,List为菜单的数量,可自由设置。这里设置为1,并将元素0设置为刚刚创建的菜单_dropdown。这一步主要为了以后扩展菜单管理用。
5.选中菜单_dropdown,点击值改变时底下的+号,将MenuControl选为控制对象(或者直接拖拽过去),Runtime Only旁选择Menu–Eventlistening,即可实现下拉菜单选项的反应事件。(多个菜单就在Menu脚本中再创建相应的listening函数)
【实现效果】

【源码Demo】
Unity编辑器版本:2019.4.35
https://download.csdn.net/download/mudapao/85651230
边栏推荐
- 关于硬件问题造成的MCU死机,过来人简单的谈一谈
- Finally, when you open source the applet ~
- keepalived監控進程,自動重啟服務進程
- 有了 MySQL 为什么要用 NoSQL?
- 【批处理DOS-CMD命令-汇总和小结】-cmd扩展命令、扩展功能(cmd /e:on、cmd /e:off)
- Why is true == "true" true in R- Why TRUE == “TRUE” is TRUE in R?
- 稳压二极管的原理,它有什么作用?
- Weimeisi new energy rushes to the scientific innovation board: the annual revenue is 1.7 billion, and the book value of accounts receivable is nearly 400million
- Orcad Schematic常用功能
- MySQL - definition and assignment of variables
猜你喜欢
随机推荐
We are different
[batch dos-cmd command - summary and summary] - CMD extended command and function (CMD /e:on, CMD /e:off)
Cocos learning diary 3 - API acquisition nodes and components
[leetcode] two num · sum of two numbers
How do I know if mysqlnd is an active driver- How to know if MySQLnd is the active driver?
LTpowerCAD II和LTpowerPlanner III
分布式锁中的王者方案 - Redisson
Reading sensor data with GPIO analog SPI interface
lotus v1.16.0-rc3 calibnet
Mysql database import SQL file display garbled code
Why is true == "true" true in R- Why TRUE == “TRUE” is TRUE in R?
Chang Wei (variables and constants) is easy to understand
Event registration Apache pulsar x kubesphere online meetup hot registration
Enter an integer with any number of bits, and output the sum of each bit of the number. For example: 1234 – > 10
【批处理DOS-CMD命令-汇总和小结】-应用程序启动和调用、服务和进程操作命令(start、call、)
Can we use function pointers in go- Can we have function pointers in Go?
SQL query, if value is null then return 1 - SQL query, if value is null then return 1
I have used it for six years!
Google extender address
College entrance examination voluntary filling, why is the major the last consideration?









