如何获取Dropdown组件



我有一个画布,里面有一个面板,在面板下面放了一堆下拉菜单和一个脚本。

在脚本中,我试图通过获得下拉菜单

GetComponent<Dropdown>();
GetComponentInChildren<Dropdown>();
GameObject.Find("Range").GetComponent<Dropdown>();    //"Range" is the name of the Dropdown menu GameObject.
GetComponents<Dropdown>();
GetComponentsInChildren<Dropdown>();
GameObject.Find("Range").GetComponents<Dropdown>();    //"Range" is the name of the Dropdown menu GameObject.
.
.
.

它"ALL"返回null

请有人好心告诉我哪里做错了,并教我正确的方法,好吗!?

PS。出于多种原因,我不想将每个单独的下拉列表设置为[SerializeField]并将其分配给检查器。谢谢你的理解。很抱歉

首先;

  • 请检查检查器,并确保您的脚本和Dropdown组件位于同一对象中。(注意,您可以添加下拉菜单作为UI元素和组件(

  • 此外,请确保您的脚本中有"UnityEngine.UI"引用。

但是,如果您有一个父对象,并且您试图获取其子对象的下拉组件列表,那么您应该在父对象中使用"GetComponentsInChildren"。你可以在这个链接中找到详细的解释和例子。

因此,代码应该是:

UnityEngine.UI

Dropdown[] myDropDownList = GetComponentsInChildren<Dropdown>();

附言:对于TextMeshPro-Dropdown元素,需要TMPro命名空间。因此,代码应该是:

UnityEngine.UI

TMPro.TMP_Dropdown[] myDropDownList = GetComponentsInChildren<TMPro.TMP_Dropdown>();

UnityEngine.UI

using TMPro;

TMP_Dropdown[] myDropDownList = GetComponentsInChildren<TMP_Dropdown>();

最新更新