Как в игре сделать ввод с клавиатуры?
Хотел в своей игре сделать ввод имени персонажа. Как можно это сделать?
(Похоже, в этом должен помочь 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;
}
}
};
}