Unity用GUI实现DropDown下拉菜单
来源:互联网 发布:数据库第一范式 编辑:程序博客网 时间:2024/05/16 11:12
最近需要开发公司动作捕捉的开发插件给客户公司的Unity开发来使用,因为是让友商公司的同仁进行二次开发,所谓尽可能少的占用资源,决定使用GUI开发UI的一些东西,其中用到了一些对Inspector面板的开发和GUI开发的东西,研究了一下索性纪录下来供大家参考。
在这里我加了点内容让这个下拉菜单的小程序可以更灵活的使用,包括动态的增加下拉选项和动态增加下拉选项的响应方法,以下是这个脚本的Inspector面板的内容:
不多说了,直接上代码:
using UnityEngine;using System.Collections;using UnityEngine.Events;using System;using System.Collections.Generic;public class GUIDropDownTest : MonoBehaviour { private bool m_bolIsOpen = false; private float m_floSpeed = 10; private float[] m_floAllBtnY; public Rect DropDownInitState;//这个是下拉菜单的初始化位置、大小,可以在Inspector面板中调节。 public List<string> m_iMenuRowName; public List<TimeEventTrigger> allList;//所有菜单选项在Inspector面板上的动态添加方法 private delegate void TestMethods(); TestMethods testMethods; void Awake() { m_floAllBtnY = new float[m_iMenuRowName.Count]; } void OnGUI() { if (GUI.Button(DropDownInitState, "下拉菜单")) { m_bolIsOpen = true; } if (m_bolIsOpen) { for (int i = 0; i < m_iMenuRowName.Count; i++) { if (GUI.Button(new Rect(DropDownInitState.x, m_floAllBtnY[i], DropDownInitState.width, DropDownInitState.height), m_iMenuRowName[i])) { m_bolIsOpen = false; for (int j = 0; j < m_iMenuRowName.Count; j++) { m_floAllBtnY[j] = 20; } allList[i].m_TimeEvent.Invoke(); } } } } //四个Test方法是我随便写的,用来放到Inspector面板的函数入口上,进行Debug测试,实际使用中大家奇异删掉这部分。 public void Test1() { Debug.Log("我是番茄1"); } public void Test2() { Debug.Log("我是番茄2"); } public void Test3() { Debug.Log("我是番茄3"); } public void Test4() { Debug.Log("我是番茄4"); } void FixedUpdate() { if (m_bolIsOpen) { for (int i = 0; i < m_iMenuRowName.Count; i++) { if (m_floAllBtnY[i] < 20 + DropDownInitState.height * (i + 1)) { m_floAllBtnY[i] += m_floSpeed; } } } }} //一下是在Inspector面板上动态添加方法函数的代码[Serializable]public class TimeEventTrigger{ [Serializable] public class TimeEvent : UnityEvent { } [SerializeField] public TimeEvent m_TimeEvent = new TimeEvent();}
这是一个完整的脚本,直接将这堆代码复制到Unity里面的脚本上,就可以轻易的实现GUI下拉菜单的效果了。
0 0
- Unity用GUI实现DropDown下拉菜单
- 【Bootstrap】下拉菜单Dropdown
- Unity UGUI实现可编辑下拉框(dropdown)
- FrontEnd 步步高升:Dropdown,纯javascript实现下拉菜单
- Bootstrap使用Tab和dropdown实现导航下拉菜单效果
- bootstrap之dropdown下拉菜单
- BootStrap--CSS组件--下拉菜单(dropdown)
- 实现bootstrap的dropdown-menu(下拉菜单)点击后不关闭的方法
- 实现bootstrap的dropdown-menu(下拉菜单)点击后不关闭的方法
- 实现bootstrap的dropdown-menu(下拉菜单)点击后不关闭的方法
- [Unity][UGUI]DropDown下拉框监听改变值的事件
- jquery:提取亚马逊网站的dropdown下拉菜单
- UGUI提高<六> ToggleGroup勾选组和Dropdown下拉菜单
- Bootstrap基础6——下拉菜单dropdown
- ui selection dropdown 的下拉菜单又失灵了!
- bootstrap下拉菜单与滚动监视器学习笔记(2-1 下拉菜单(Dropdown))
- 用jquery 实现下拉菜单
- 用jquery 实现下拉菜单
- javascript style
- Android Animation动画(超详细)
- 【HDU 5988】 Coding Contest 【费用流】
- 利用JMeter的beanshell进行接口的加密处理
- bootstrap图标集
- Unity用GUI实现DropDown下拉菜单
- 34-招待你的“客人”
- mac部署electron过程
- EXTJS如何把Label的值设置为后台加载出来的内容?
- PHP 命名空间
- 关于unity中的update、Lateupdate和FixedUpdate。
- Android开发实用工具类之Log类
- PDO的基础
- SceneKit一个加载3D模型的神奇框架