6

我得到了 Unity3D 5.2 并第一次使用下拉 GUI 元素。它很容易在 insepctor 中使用,但我希望显示选项,取决于我在 Resources/Shapes/ 中的文件

所以下拉列表应该显示我在 Resources/Shapes/ 中获得的所有文件名,但我无法在附加的 C# 脚本中获取此属性。阅读 Dropdown 手册后,应该有一个名为“Options”的属性,它应该有一个字符串和一个图像变量。(所以据我了解,它是一种二维数组类型)

不幸的是,我不能使用以下脚本(伪代码,因为它不起作用)

GameObject obj = GameObject.Find("Dropdown");

var info = new DirectoryInfo("Assets/Resources/Shapes");
var fileInfo = info.GetFiles();
foreach (var file in fileInfo)
{
    //Add OptionsString Pseudo-Code
    obj.Options += file; // Options doesnt exist
}

任何人都可以向我解释如何在我的下拉菜单上操作选项属性,我在谷歌中找不到任何东西。只有在 Unity 有内置下拉菜单之前的旧方法

提前致谢

4

3 回答 3

8
List<string> list = new List<string> { "option1", "option2" };
var dropdown = GetComponent<Dropdown>();
dropdown.options.Clear();
foreach (string option in list)
{
    dropdown.options.Add(new Dropdown.OptionData(option));
}
于 2015-11-25T17:17:20.140 回答
3

找到了答案:

Dropdown.OptionData list = new Dropdown.OptionData("Name");
obj.GetComponent<Dropdown>().options.Add(list);
于 2015-10-26T15:17:34.913 回答
1

答案是正确的,但缺少一行代码:

dropdown.RefreshShownValue();

添加值并设置所选选项后,您应该刷新显示的内容。TextMesh Pro Dropdown 的完整代码如下:

List<string> list = new List<string> { "option1", "option2" };
dropdown.options.Clear();
foreach (string option in list)
{
    dropdown.options.Add(new TMP_Dropdown.OptionData(option));
}
dropdown.value = 0;
dropdown.RefreshShownValue();
于 2021-12-26T21:48:24.420 回答