Unity C # раскрывающийся текст предисловия - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь сделать раскрывающийся список как часть экрана входа в систему, в котором выбирается домен, в который пользователь должен войти, например, «event a» и «admin». Я хотел бы, чтобы в раскрывающемся интерфейсе пользователя, где обычно отображался выбранный параметр, ПЕРЕД выбранным параметром был предисловие «выберите домен ...». В настоящее время он всегда показывает верхнюю опцию, независимо от того, был ли выбран, как только включен режим воспроизведения. Есть ли способ отключить или изменить это, чтобы показать предисловие до тех пор, пока не будет выбрана опция?

Использование единицы 2018.2.5f1 и c #

Пожалуйста, посмотрите видео с гиперссылками для визуального представления моей проблемы https://youtu.be/1bX_xc4sDeE

ps Я довольно новичок в c # и интерфейсе Unity, поэтому, возможно, допустил несколько ужасных ошибок xD

Буду также признателен за любые советы, касающиеся уровней доступа (для администратора - для доступа только к сцене администратора) и правильной реализации учетных записей пользователей! :) Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

На самом деле текст 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 вместо этого, поскольку вы хотите игнорировать первую запись.

0 голосов
/ 28 августа 2018

К сожалению, нет способа поместить заполнители в выпадающий список Unity (по крайней мере, на данный момент)

Обычный подход в этом случае состоит в том, чтобы первый элемент в раскрывающемся списке имел значение "Please Select Domain", а затем обрабатывал выбор в коде.

(Например, если игрок не выбрал другой вариант, не позволяйте ему продолжить)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...