我有一个画布,里面有一个面板,在面板下面放了一堆下拉菜单和一个脚本。
在脚本中,我试图通过获得下拉菜单
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>();