我正在尝试将下拉选项作为登录屏幕的一部分,选择用户登录的域,例如“event a”和“admin”。我希望在下拉UI中有“选择域...”的前言文本,在选择选项之前,通常会显示所选选项。目前,只要启用了播放模式,它始终显示顶部选项,无论是否已选择。是否有任何方法可以禁用或更改此选项以显示前言文本,直到选择了一个选项?
使用unity 2018.2.5f1和c#
请查看超链接视频,以便直观地显示我的问题https://youtu.be/1bX_xc4sDeE
ps我是c#和Unity UI的新手,所以可能犯了一些可怕的错误xD
我也很感激有关访问级别的任何建议(对于管理员 - 访问仅限管理员的场景)和正确实施用户帐户! :) 谢谢!
遗憾的是,没有办法将占位符放在Unity下拉列表中(至少目前为止)
在这种情况下,常见的方法是将下拉列表中的第一个项目作为"Please Select Domain"
,然后在代码中处理选择。
(例如。如果玩家没有选择任何其他选项,那么不要让他们继续)
实际上,Label
的文本应该完全按照你的意愿工作。
(对我来说,如果我将Dropdown添加到空场景中,请更改Label的文本并点击Play我看到Label直到我更改了值。)
但是,我认为您的问题是,在您的代码中的某处,您已经更改了value
的Dropdown
,例如到0
或-1
,导致它跳到0
。确保在用户之前不要触摸任何地方的value
。
并且:还可以将Label更改为某个字符串,默认情况下,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
,因为你想忽略第一个条目。