Как в игре сделать ввод с клавиатуры?

Хотел в своей игре сделать ввод имени персонажа. Как можно это сделать?

(Похоже, в этом должен помочь InputField, но не понял, как им пользоваться. Делать свою клавиатуру через Input.GetKeyDown кажется очень глупой идеей)


Ответы (3 шт):

Автор решения: Максим Фисман

InputField - это UI элемент, по-русски - текстовое поле, и это лучший способ сделать ввод текста с клавиатуры в игре (не только имени персонажа). Делать ввод по-другому - изобретения двухколесного транспортного средства с рулем и педалями. Что именно вы не поняли? Может быть, как получить текст из InputField? Его можно получить с помощью:

[Сам_объект-текстовое_поле].GetComponent<InputField>().text;

Если вам не понятно что-то другое - пишите, отвечу, но лучше для вас почитать документацию по ссылке в начале.

→ Ссылка
Автор решения: Герман Покровский

Как написали выше, можно сделать это все через делегаты (GetComponent). Но я хочу предложить способ, легче, которым пользуюсь сам. Необходимо создать переменную типа InputField, вот таким образом:

public InputField name;

Затем у этой переменной можно получить сам введенный в текстовое поле текст. Это и будет значение, которое введет игрок. Его можно записать в обычную переменную, вот таким образом:

string character_name = name.text;

Оба способа рабочие, но для меня, этот проще, ибо понятнее, пользуйтесь)

→ Ссылка
Автор решения: Арман

Дополнение ответу участника Максим Фисман.


Прежде чем просто взять значение с InputField я бы посоветовал проверить его:

using UnityEngine.UI;

...

[SerializedField] private InputField _JustAField;
private string _PlayerName;

private void Start()
{
    _JustAField.onValueChanged.AddEventListener
    {
        delegate(string value)
        {
            if(!string.IsNullOrEmpty(value))
            {
                _PlayerName = value;
            }
        }
    };
}
→ Ссылка