Установить событие окончания редактирования из поля ввода (Text Mesh Pro) во время выполнения - PullRequest
0 голосов
/ 07 мая 2018

Я программирую игру в Unity, но у меня проблемы с событием On End Edit для поля ввода из Text Mesh Pro.Мне нужно определить событие во время выполнения (в коде).Я действительно понятия не имею, как это исправить.

Вот изображение из события в редакторе, и я хочу, чтобы оно подключилось к методу PressedButton в классе PlayerConnectionManager:

Here is a picture from the event in the editor

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 07 мая 2018

Я предполагаю, что вам нужно вызывать PlayerConnectionManager.PressedButton во время выполнения, а не через редактор. Если это так, то это довольно просто. Вам просто нужно использовать addlistener. Вот фрагмент.

public class TextMeshAdd : MonoBehaviour 
{
    //input field object
    public TMP_InputField tmpInputField;

    // Use this for initialization
    void Start () 
    {
        //Add a listener function here
        //Note: The function has to be of the type with parameter string
        tmpInputField.onEndEdit.AddListener(TextMeshUpdated);
    }

    public void TextMeshUpdated(string text) 
    {
        Debug.Log("Output string "  + text);
    }
}

Помните, что функция, которую вы ей даете, должна иметь параметр со строкой. т.е. PlayerConnectionManager.PressedButton должно быть того типа, который указан выше TextMeshUpdated(string text). Это позволит ему вызывать функцию в конце во время выполнения.

Еще одна вещь, которую вы должны иметь в виду, это то, что если вы используете поле ввода в каком-то другом месте, обязательно удалите старого слушателя перед добавлением нового слушателя. Вы можете сделать это с помощью этого tmpInputField.onEndEdit.RemoveListener(TextMeshUpdated); или же tmpInputField.onEndEdit.RemoveAllListeners();

Первый метод удалит только определенный обратный вызов функции, в то время как RemoveAllListeners удалит все прослушиватели событий, прикрепленные к обратному вызову. Если вы не сделаете этого и попытаетесь назначить новый обратный вызов, он попытается вызвать старые функции и, возможно, может вызвать некоторые ошибки.

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