【发布时间】: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<Text>(true)就可以了 -
var toogles = dropDownList.GetComponentsInChildren<Toggle>(true); toogles[index].interactable = enable; var mylabel = toogles[index].GetComponentInChildren<Text>(true); mylabel.color = Color.red;似乎不起作用,但我完全按照你说的做了。可交互部分有效,但标签不着色