当前位置:网站首页>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
边栏推荐
- Escape analysis of 982 golang
- Redirect to previous page after login? PHP - Redirecting to previous page after login? PHP
- 3632. Binary sum
- MySQL(十二)——更改表的备注
- 有了 MySQL 为什么要用 NoSQL?
- Reading sensor data with GPIO analog SPI interface
- 正版photoshop2022购买体验经历分享
- ES 终于可以搜到”悟空哥“了!
- 48 张图 | 手摸手教你微服务的性能监控、压测和调优
- [Batch dos - cmd Command - Summary and Summary] - External Command - cmd Download Command, wget Command
猜你喜欢

分布式锁中的王者方案 - Redisson

The e-book "action guide for large organizations to further promote zero code application platform" was officially released!

Distributed quorum NWR of the alchemy furnace of the Supreme Master

LTpowerCAD II和LTpowerPlanner III

用动图讲解分布式 Raft

Don't you know the evolution process and principle of such a comprehensive redis cluster model?

Zhugeliang vs pangtong, taking distributed Paxos

The perfect presentation of Dao in the metauniverse, and platofarm creates a farm themed metauniverse

有了 MySQL 为什么要用 NoSQL?

【批处理DOS-CMD命令-汇总和小结】-应用程序启动和调用、服务和进程操作命令(start、call、)
随机推荐
太上老君的炼丹炉之分布式 Quorum NWR
[Introduction aux uvm== > Episode 9] ~ modèle de registre, intégration du modèle de registre, méthode conventionnelle du modèle de registre, scénario d'application du modèle de registre
高效探索|ES地理位置查询的一次应用实践
Genuine photoshop2022 purchase experience sharing
Streamnational platform version 1.5 is released, integrating istio and supporting openshift deployment
MySQL - definition and assignment of variables
【pytest】修改allure报告中的logo及参数化
Debug through yalc before releasing NPM package
Explain distributed raft with dynamic diagram
Several good weather plug-ins
【UVM入门 ===> Episode_9 】~ 寄存器模型、寄存器模型的集成、寄存器模型的常规方法、寄存器模型的应用场景
几款不错的天气插件
Is it possible to use Jasmine's toHaveBeenCalledWith matcher with a regular expression?
Authentique Photoshop 2022 expérience d'achat partage
哇哦,好丰富呀。
【LeetCode】two num·两数之和
Redirect to previous page after login? PHP - Redirecting to previous page after login? PHP
1W words | 40 pictures | hard core es actual combat
What is the new business model of Taishan crowdfunding in 2022?
[batch dos-cmd command - summary and summary] - add comment command (REM or::)