首页 > 解决方案 > Unity3D - 如何在下拉菜单中更改 ItemLabel 的颜色

问题描述

我在 Unity 中使用 DropDown 元素,在我的代码中,如果不满足要求,我会禁用一些选择:

  var toogles = dropDownList.GetComponentsInChildren<Toggle>(true);
  toogles[index].interactable = enable;

我还想更改禁用切换的 ItemLabel 文本的颜色,我试过:

       var mylabel = dropDownList.GetComponentsInChildren<Text>(true);
       mylabel[index].color = Color.red;

但不起作用,我不知何故需要将该 ItemLabel 存储在在 Dropdown/Template/Item/ItemLabel 下创建的变量中

我试图创建一个public Text拖放在模板下创建的 ItemLabel 的位置,但由于它不是创建的确切文本,它只是一个模板,它不起作用。

有人知道如何访问 DropDown 的 ItemLabel 吗?

编辑:

我做到了这一点:

    if(toogles[i].interactable == false)
        {
            _dropdown.itemText.color = Color.red;
        }

但不知道如何添加索引,所以只有一些项目会是红色的

标签: c#unity3dtextdropdown

解决方案


我能够使用以下代码找到并遍历 itemLabels:

 var myLabels = GameObject.FindGameObjectsWithTag("ItemLabel");
        var objectCount = myLabels.Length;
        Debug.Log("Object count:" + objectCount);
        Text[] myItemLabels = new Text[6];
        int k = 0;
        foreach (var obj in myLabels)
        {
          myItemLabels[k] = obj.GetComponent<Text>();
          k++;
        }

推荐阅读