Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 07.11.2014
Сообщений: 95
1

Чат в игре и InputField. Обращение к пользователю

17.01.2017, 13:21. Просмотров 2321. Ответов 2
Метки нет (Все метки)

Приветствую! Делаю чат в игре. При нажатии на сообщение пользователя, в inputField.text добавляю ник игрока и запятую (обращение к пользователю), фокус уходит в inputField и дальше пишешь сообщение. <- Это как должно быть. А на деле иначе - при нажатии добавляется ник, фокус на inputField, и !выделяется! весь текст сообщения. т.е. продолжить писать не сможешь пока не уберешь выделение и поставишь курсор в конец строки. А иначе весь выделенный текст удаляется и курсор уходит на нулевую позицию.

C#
1
2
3
4
5
6
void AddAppeal(string _nick)
{
    inputField.text += _nick + ", ";
    inputField.ActivateInputField();
    inputField.MoveTextEnd(false);
}
Как сделать, чтобы при обращении можно было продолжить писать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2017, 13:21
Ответы с готовыми решениями:

Чат на ajax. Как отправить сообщение пользователю чата
В общем столкнулся с чатом на ajax. Хочу отправить сообщение пользователю чата Ajax data...

Обращение к пользователю в ответе бота в телеграмме
Как сделать так чтобы бот при ответе делал обращение к человеку с которым он говорит? Обращение не...

Inputfield
Всем привет! Напишите готовый код пж: Если в компоненте inputfield в значении Text появилось...

InputField значения
Как мне написать внутри InputField? И как мне взять от туда значения? Например: когда игра...

2
209 / 199 / 63
Регистрация: 24.09.2014
Сообщений: 532
17.01.2017, 19:47 2
Вобщем работает эта байда так:
inputField.ActivateInputField(); <- ставит флажок внутри InputField, что ему нужно активироваться в следующем кадре
InputField.LateUpdate видит флажок, активируется и вызывает сам себе OnFocus
InputField.OnFocus вызывает InputField.SelectAll ну дальше понятно

Простой костыль такой:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
 
public class InputFocusTest : MonoBehaviour
{
 
    public InputField TargetField;
 
    public void OnGUI()
    {
        GUILayout.Label("selectionAnchorPosition:" + TargetField.selectionAnchorPosition);
        GUILayout.Label("caretPosition:" + TargetField.caretPosition);
    }
 
    public void SetFocus()
    {
        StartCoroutine(ActivateInput());
 
    }
 
    IEnumerator ActivateInput()
    {
        Debug.Log(TargetField.selectionAnchorPosition + " " + TargetField.caretPosition);
        TargetField.text = "hello world";
        TargetField.ActivateInputField();
        yield return null;
        TargetField.caretPosition = TargetField.text.Length;
        Debug.Log(TargetField.selectionAnchorPosition + " " + TargetField.caretPosition);
    }
}
но выглядит не очень красиво.

Исходники UnityEngine.UI есть на bitbucket можешь покапаться, может найдёшь более красивый способ
0
742 / 590 / 203
Регистрация: 06.08.2015
Сообщений: 2,428
17.01.2017, 23:49 3
А можно этот файл запихнуть в проект чтобы он перекрыл встроенный?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2017, 23:49

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

Управление кодом через inputfield
Все наверное знают, что есть UnityEvent. Так вот, в редакторе он видит публичные методы скрипта....

Обработка вводимого текста в InputField
В InputField вводится команда, например, Spawn Cube. В этом случае алгоритм решения мне понятен. Но...

Работа с введенным в InputField текстом
Здравствуйте! Недавно начал изучать Unity, сейчас пробую написать свою игру. Игра по своей...

Получение текста из поля Inputfield
Всем привет! Решил делать переводчик на unity3d. (не спрашивайте зачем)) Уже понял идею как это...

Разделить введенный текст InputField отступами (Enter)
Ввожу с клавиатуры текст в InputField. И когда написал нужное мне слово, я нажимаю Enter, и начинаю...

Как присвоить переменной значение, которое ввел в InputField?
А затем передать её значение объекту на другой сцене?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.