commit
12c01ae922
|
@ -95,8 +95,10 @@ namespace UnityEngine.UI.Extensions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO design as foldout for Inspector
|
public float DropdownOffset = 10f;
|
||||||
public Color ValidSelectionTextColor = Color.green;
|
|
||||||
|
//TODO design as foldout for Inspector
|
||||||
|
public Color ValidSelectionTextColor = Color.green;
|
||||||
public Color MatchingItemsRemainingTextColor = Color.black;
|
public Color MatchingItemsRemainingTextColor = Color.black;
|
||||||
public Color NoItemsRemainingTextColor = Color.red;
|
public Color NoItemsRemainingTextColor = Color.red;
|
||||||
|
|
||||||
|
@ -184,35 +186,6 @@ namespace UnityEngine.UI.Extensions
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* currently just using items in the list instead of being able to add to it.
|
|
||||||
public void AddItems(params object[] list)
|
|
||||||
{
|
|
||||||
List<DropDownListItem> ddItems = new List<DropDownListItem>();
|
|
||||||
foreach (var obj in list)
|
|
||||||
{
|
|
||||||
if (obj is DropDownListItem)
|
|
||||||
{
|
|
||||||
ddItems.Add((DropDownListItem)obj);
|
|
||||||
}
|
|
||||||
else if (obj is string)
|
|
||||||
{
|
|
||||||
ddItems.Add(new DropDownListItem(caption: (string)obj));
|
|
||||||
}
|
|
||||||
else if (obj is Sprite)
|
|
||||||
{
|
|
||||||
ddItems.Add(new DropDownListItem(image: (Sprite)obj));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new System.Exception("Only ComboBoxItems, Strings, and Sprite types are allowed");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Items.AddRange(ddItems);
|
|
||||||
Items = Items.Distinct().ToList();//remove any duplicates
|
|
||||||
RebuildPanel();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
public void AddItem(string item)
|
public void AddItem(string item)
|
||||||
{
|
{
|
||||||
AvailableOptions.Add(item);
|
AvailableOptions.Add(item);
|
||||||
|
@ -255,11 +228,19 @@ namespace UnityEngine.UI.Extensions
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void RebuildPanel()
|
private void RebuildPanel()
|
||||||
{
|
{
|
||||||
|
if (_isPanelActive) ToggleDropdownPanel();
|
||||||
|
|
||||||
//panel starts with all options
|
//panel starts with all options
|
||||||
_panelItems.Clear();
|
_panelItems.Clear();
|
||||||
_prunedPanelItems.Clear();
|
_prunedPanelItems.Clear();
|
||||||
panelObjects.Clear();
|
panelObjects.Clear();
|
||||||
|
|
||||||
|
//clear Autocomplete children in scene
|
||||||
|
foreach (Transform child in _itemsPanelRT.transform)
|
||||||
|
{
|
||||||
|
Destroy(child.gameObject);
|
||||||
|
}
|
||||||
|
|
||||||
foreach (string option in AvailableOptions)
|
foreach (string option in AvailableOptions)
|
||||||
{
|
{
|
||||||
_panelItems.Add(option.ToLower());
|
_panelItems.Add(option.ToLower());
|
||||||
|
@ -363,7 +344,7 @@ namespace UnityEngine.UI.Extensions
|
||||||
|
|
||||||
if (_panelItems.Count < 1) return;
|
if (_panelItems.Count < 1) return;
|
||||||
|
|
||||||
float dropdownHeight = _rectTransform.sizeDelta.y * Mathf.Min(_itemsToDisplay, _panelItems.Count);
|
float dropdownHeight = _rectTransform.sizeDelta.y * Mathf.Min(_itemsToDisplay, _panelItems.Count) + DropdownOffset;
|
||||||
|
|
||||||
_scrollPanelRT.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, dropdownHeight);
|
_scrollPanelRT.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, dropdownHeight);
|
||||||
_scrollPanelRT.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, _rectTransform.sizeDelta.x);
|
_scrollPanelRT.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, _rectTransform.sizeDelta.x);
|
||||||
|
@ -424,7 +405,7 @@ namespace UnityEngine.UI.Extensions
|
||||||
/// Toggle the drop down list
|
/// Toggle the drop down list
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="directClick"> whether an item was directly clicked on</param>
|
/// <param name="directClick"> whether an item was directly clicked on</param>
|
||||||
public void ToggleDropdownPanel(bool directClick)
|
public void ToggleDropdownPanel(bool directClick = false)
|
||||||
{
|
{
|
||||||
_isPanelActive = !_isPanelActive;
|
_isPanelActive = !_isPanelActive;
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,9 @@ namespace UnityEngine.UI.Extensions
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private int _itemsToDisplay;
|
private int _itemsToDisplay;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
private bool _sortItems = true;
|
||||||
|
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class SelectionChangedEvent : UnityEngine.Events.UnityEvent<string>
|
public class SelectionChangedEvent : UnityEngine.Events.UnityEvent<string>
|
||||||
{
|
{
|
||||||
|
@ -178,7 +181,7 @@ namespace UnityEngine.UI.Extensions
|
||||||
{
|
{
|
||||||
_panelItems.Add(option.ToLower());
|
_panelItems.Add(option.ToLower());
|
||||||
}
|
}
|
||||||
_panelItems.Sort();
|
if(_sortItems) _panelItems.Sort();
|
||||||
|
|
||||||
List<GameObject> itemObjs = new List<GameObject>(panelObjects.Values);
|
List<GameObject> itemObjs = new List<GameObject>(panelObjects.Values);
|
||||||
panelObjects.Clear();
|
panelObjects.Clear();
|
||||||
|
|
|
@ -133,9 +133,17 @@ namespace UnityEngine.UI.Extensions
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* currently just using items in the list instead of being able to add to it.
|
// currently just using items in the list instead of being able to add to it.
|
||||||
public void AddItems(params object[] list)
|
/// <summary>
|
||||||
|
/// Rebuilds the list from a new collection.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// NOTE, this will clear all existing items
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="list"></param>
|
||||||
|
public void RefreshItems(params object[] list)
|
||||||
{
|
{
|
||||||
|
Items.Clear();
|
||||||
List<DropDownListItem> ddItems = new List<DropDownListItem>();
|
List<DropDownListItem> ddItems = new List<DropDownListItem>();
|
||||||
foreach (var obj in list)
|
foreach (var obj in list)
|
||||||
{
|
{
|
||||||
|
@ -157,10 +165,74 @@ namespace UnityEngine.UI.Extensions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Items.AddRange(ddItems);
|
Items.AddRange(ddItems);
|
||||||
Items = Items.Distinct().ToList();//remove any duplicates
|
|
||||||
RebuildPanel();
|
RebuildPanel();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds an additional item to the drop down list (recommended)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item">Item of type DropDownListItem</param>
|
||||||
|
public void AddItem(DropDownListItem item)
|
||||||
|
{
|
||||||
|
Items.Add(item);
|
||||||
|
RebuildPanel();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds an additional drop down list item using a string name
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item">Item of type String</param>
|
||||||
|
public void AddItem(string item)
|
||||||
|
{
|
||||||
|
Items.Add(new DropDownListItem(caption: (string)item));
|
||||||
|
RebuildPanel();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds an additional drop down list item using a sprite image
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item">Item of type UI Sprite</param>
|
||||||
|
public void AddItem(Sprite item)
|
||||||
|
{
|
||||||
|
Items.Add(new DropDownListItem(image: (Sprite)item));
|
||||||
|
RebuildPanel();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes an item from the drop down list (recommended)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item">Item of type DropDownListItem</param>
|
||||||
|
public void RemoveItem(DropDownListItem item)
|
||||||
|
{
|
||||||
|
Items.Remove(item);
|
||||||
|
RebuildPanel();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes an item from the drop down list item using a string name
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item">Item of type String</param>
|
||||||
|
public void RemoveItem(string item)
|
||||||
|
{
|
||||||
|
Items.Remove(new DropDownListItem(caption: (string)item));
|
||||||
|
RebuildPanel();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes an item from the drop down list item using a sprite image
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item">Item of type UI Sprite</param>
|
||||||
|
public void RemoveItem(Sprite item)
|
||||||
|
{
|
||||||
|
Items.Remove(new DropDownListItem(image: (Sprite)item));
|
||||||
|
RebuildPanel();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetItems()
|
||||||
|
{
|
||||||
|
Items.Clear();
|
||||||
|
RebuildPanel();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Rebuilds the contents of the panel in response to items being added.
|
/// Rebuilds the contents of the panel in response to items being added.
|
||||||
|
|
Loading…
Reference in New Issue