统一c#下拉前言文本

问题描述 投票:0回答:2

我正在尝试将下拉选项作为登录屏幕的一部分,选择用户登录的域,例如“event a”和“admin”。我希望在下拉UI中有“选择域...”的前言文本,在选择选项之前,通常会显示所选选项。目前,只要启用了播放模式,它始终显示顶部选项,无论是否已选择。是否有任何方法可以禁用或更改此选项以显示前言文本,直到选择了一个选项?

使用unity 2018.2.5f1和c#

请查看超链接视频,以便直观地显示我的问题https://youtu.be/1bX_xc4sDeE

ps我是c#和Unity UI的新手,所以可能犯了一些可怕的错误xD

我也很感激有关访问级别的任何建议(对于管理员 - 访问仅限管理员的场景)和正确实施用户帐户! :) 谢谢!

c# user-interface unity3d text dropdown
2个回答
0
投票

遗憾的是,没有办法将占位符放在Unity下拉列表中(至少目前为止)

在这种情况下,常见的方法是将下拉列表中的第一个项目作为"Please Select Domain",然后在代码中处理选择。

(例如。如果玩家没有选择任何其他选项,那么不要让他们继续)


0
投票

实际上,Label的文本应该完全按照你的意愿工作。

(对我来说,如果我将Dropdown添加到空场景中,请更改Label的文本并点击Play我看到Label直到我更改了值。)


但是,我认为您的问题是,在您的代码中的某处,您已经更改了valueDropdown,例如到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,因为你想忽略第一个条目。

© www.soinside.com 2019 - 2024. All rights reserved.