c# - 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;
}
但不知道如何添加索引,所以只有一些项目会是红色的
解决方案
我能够使用以下代码找到并遍历 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++;
}
推荐阅读
- php - php ajax 生成 csrf 令牌
- docker - Docker Compose - 限制对某些容器的服务访问并禁用来自外部 docker 的访问
- css - primefaces 菜单的背景颜色不起作用
- c - 在 C 语言中匹配 IP 地址的最佳正则表达式或技术是什么
- windows - 为什么 `agile_ref` 会因某些对象(例如 `CoreWindow`)而失败?
- typescript - 您如何将“keyof T”表示为字符串的子集?
- docker - Google Cloud Composer - 部署 Docker 映像
- php - 队列::推送错误 - laravel
- ios - Swift:拉动刷新太敏感了
- wolfram-mathematica - 忽略 Mathematica 中具有多个变量的方程的一部分