64 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|