【问题标题】:Unity3D - How to change color for ItemLabel in DropDownUnity3D - 如何在下拉菜单中更改 ItemLabel 的颜色
【发布时间】:2020-12-05 04:59:35
【问题描述】:

我在 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;
        }

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

【问题讨论】:

  • 我认为类似于this,您可以在之后访问动态生成的切换并更改其文本颜色。
  • 这是我取代码的地方,Toggle 是 DropDown 的子项,但项目标签是模板的一部分,不知道如何访问它
  • 一旦你有相应的开关,你可以GetComponentInChildren&lt;Text&gt;(true)就可以了
  • var toogles = dropDownList.GetComponentsInChildren&lt;Toggle&gt;(true); toogles[index].interactable = enable; var mylabel = toogles[index].GetComponentInChildren&lt;Text&gt;(true); mylabel.color = Color.red; 似乎不起作用,但我完全按照你说的做了。可交互部分有效,但标签不着色

标签: c# unity3d text dropdown


【解决方案1】:

我能够使用以下代码找到并遍历 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++;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多