#c# #unity3d
Вопрос:
У меня есть сцена с несколькими полями ввода в моем приложении unity, и я хотел бы динамически обновлять некоторые переменные по мере ввода пользователем полей ввода. Я хотел бы иметь возможность обновлять только переменную, соответствующую обновленному полю ввода (без необходимости перебирать все поля ввода в сцене и устанавливать все переменные). Есть ли способ получить игровой объект в поле ввода, в которое я сейчас вводю? У меня есть функция, которую я установил в качестве функции OnValueChanged в полях ввода, но сейчас я регистрирую только текущее значение поля: ` ‘ public void InputUpdate(ввод строки) { Отладка.Журнал(ввод); } « Настройка в редакторе:
[![Настройка редактора][1]][1]
Спасибо
Комментарии:
1. Не знаю почему, но вопрос загружается без форматирования и отсутствует «Здравствуйте» в начале вопроса, я попытался его отредактировать, и как только я наберу что-либо во время редактирования, это исправит форматирование, но затем он все равно странно загружается на страницу вопроса. Не знаю, как это исправить, надеюсь, это можно использовать так (основная часть-объяснение). Вот ссылка на изображение, на котором показано, как должен выглядеть вопрос: imgur.com/uWFVQTC
Ответ №1:
Если вам нужен конкретный игровой объект для каждого поля ввода, я бы рассмотрел возможность назначения обратного вызова в коде. Что-то вроде:
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
public class TestScript : MonoBehaviour
{
[SerializeField] private List<InputField> yourInputFields = new List<InputField>();
public void Start()
{
foreach (InputField input in yourInputFields)
input.onValueChanged.AddListener(delegate { Test(input.text, input.gameObject); });
}
public void Test(string str, GameObject go = null)
{
Debug.Log(go.name " " str);
}
}
Теперь функция Test
будет вызываться с назначенным конкретным игровым объектом Start
, который привязан к конкретному InputField
onValueChange
. Просто назначьте каждого InputField
, кого вы хотите использовать для этого обратного вызова, в инспекторе, перетащив их в открытый список.