123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- using System;
- using UnityEngine;
- public class ComboBox
- {
- public ComboBox(Rect rect, GUIContent buttonContent, GUIContent[] listContent, GUIStyle listStyle)
- {
- this.rect = rect;
- this.buttonContent = buttonContent;
- this.listContent = listContent;
- this.buttonStyle = "button";
- this.boxStyle = "box";
- this.listStyle = listStyle;
- }
- public ComboBox(Rect rect, GUIContent buttonContent, GUIContent[] listContent, string buttonStyle, string boxStyle, GUIStyle listStyle)
- {
- this.rect = rect;
- this.buttonContent = buttonContent;
- this.listContent = listContent;
- this.buttonStyle = buttonStyle;
- this.boxStyle = boxStyle;
- this.listStyle = listStyle;
- }
- public int Show()
- {
- if (ComboBox.forceToUnShow)
- {
- ComboBox.forceToUnShow = false;
- this.isClickedComboButton = false;
- }
- bool flag = false;
- int controlID = GUIUtility.GetControlID(FocusType.Passive);
- EventType typeForControl = Event.current.GetTypeForControl(controlID);
- if (typeForControl == EventType.MouseUp)
- {
- if (this.isClickedComboButton)
- {
- flag = true;
- }
- }
- if (GUI.Button(this.rect, this.buttonContent, this.buttonStyle))
- {
- if (ComboBox.useControlID == -1)
- {
- ComboBox.useControlID = controlID;
- this.isClickedComboButton = false;
- }
- if (ComboBox.useControlID != controlID)
- {
- ComboBox.forceToUnShow = true;
- ComboBox.useControlID = controlID;
- }
- this.isClickedComboButton = true;
- }
- if (this.isClickedComboButton)
- {
- Rect position = new Rect(this.rect.x, this.rect.y + this.listStyle.CalcHeight(this.listContent[0], 1f), this.rect.width, this.listStyle.CalcHeight(this.listContent[0], 1f) * (float)this.listContent.Length);
- GUI.Box(position, string.Empty, this.boxStyle);
- int num = GUI.SelectionGrid(position, this.selectedItemIndex, this.listContent, 1, this.listStyle);
- if (num != this.selectedItemIndex)
- {
- this.selectedItemIndex = num;
- }
- }
- if (flag)
- {
- this.isClickedComboButton = false;
- }
- return this.selectedItemIndex;
- }
- public int SelectedItemIndex
- {
- get
- {
- return this.selectedItemIndex;
- }
- set
- {
- this.selectedItemIndex = value;
- }
- }
- private static bool forceToUnShow;
- private static int useControlID = -1;
- private bool isClickedComboButton;
- private int selectedItemIndex;
- private Rect rect;
- private GUIContent buttonContent;
- private GUIContent[] listContent;
- private string buttonStyle;
- private string boxStyle;
- private GUIStyle listStyle;
- }
|