我正在尝试在登录屏幕的一部分中提供一个下拉选项,该选项为用户选择要登录的域,例如“事件a”和“管理员”。我希望在下拉UI上有“选择域...”的序言文本,通常在选择选项之前会显示所选选项。当前,启用播放模式后,无论是否进行了选择,它始终显示顶部选项。在选择了某个选项之前,是否有任何方法可以禁用或更改它以显示前言文本?
使用统一的2018.2.5f1和c#
请观看超链接的视频以直观了解我的问题 https://youtu.be/1bX_xc4sDeE
ps我对C#和统一UI还是相当陌生,所以可能在xD上犯了一些可怕的错误
对于任何有关访问级别(对于管理员-只能访问管理员的场景)以及正确实施用户帐户的建议,我也将不胜感激! :)谢谢!
答案 0 :(得分:0)
不幸的是,无法将占位符置于Unity下拉列表中(至少目前如此)
在这种情况下,一种常见的方法是使下拉菜单中的第一项为"Please Select Domain"
,然后用代码处理选择。
(例如,如果玩家没有选择任何其他选项,那么不要让他们继续前进)
答案 1 :(得分:0)
实际上,Label
的文本应该完全可以根据需要工作。
(对我来说,如果我将Dropdown添加到一个空场景中,请更改Label的文本,然后单击Play,我会看到Label直到更改值。)
但是,我认为您的问题是,您在代码中的某个位置已经更改了value
中的Dropdown
,例如到0
或-1
,使其跳至0
。确保在用户未触摸之前,请勿触摸value
。
仍然:标签也可能更改为某些字符串,默认情况下value
始终设置为0
。因此,最简单的解决方案可能是添加其他选项:
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Dropdown))]
[DisallowMultipleComponent]
public class DropdownPlaceholder : MonoBehaviour
{
private Dropdown _dropdown;
[SerializeField] private string _placeHolder;
// Use this for initialization
private void Start()
{
_dropdown = GetComponent<Dropdown>();
// add the placeholder option
_dropdown.options.Insert(0, new Dropdown.OptionData(_placeHolder));
// after adding an option Dropdown adjusts the value so
// we have to set it to the new option
_dropdown.value = 0;
// Dropdown still wouldn't adopt the label -> set the label
_dropdown.captionText.text = _placeHolder;
}
}
现在,您只需将占位符文本设置为所需的任何内容即可。
随后,无论您在何处使用该值,都必须记住使用_dropdown.value -1
来代替,因为您想忽略第一个条目。