Files
ChunilENG/Assets/Scripts/UI/CustomTMPDropdown.cs

64 lines
1.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class CustomTMPDropdown : TMP_Dropdown
{
public string hideItemName;
public HashSet<string> deinteractableItems = new HashSet<string>();
public void SetHideAndDeinteractableItems(string hideItemName, HashSet<string> items)
{
this.hideItemName = hideItemName;
deinteractableItems.Clear();
foreach(var item in items)
{
deinteractableItems.Add(item);
}
}
public override void OnPointerClick(UnityEngine.EventSystems.PointerEventData eventData)
{
base.OnPointerClick(eventData);
StartCoroutine(SetHideAndDeinteractableDropdownItem());
}
private IEnumerator SetHideAndDeinteractableDropdownItem()
{
yield return null;
var dropdownList = GameObject.Find("Dropdown List");
if (dropdownList == null)
yield break;
var items = dropdownList.GetComponentsInChildren<TMP_Dropdown.DropdownItem>(true).ToList();
if (items.Count > 0)
{
var hideItem = items.Find(item => item.name.Contains(hideItemName));
hideItem.gameObject.SetActive(false);
}
var deinteractableSet = new HashSet<string>(deinteractableItems);
foreach (var item in items)
{
string itemText = item.text.text.Trim();
if (deinteractableSet.Contains(itemText))
{
if (item.toggle != null)
{
item.toggle.interactable = false;
item.text.color = Color.gray;
}
}
}
}
}