En este momento estás viendo NullReferenceException al intentar obtener texto del campo de entrada

 – Unity

NullReferenceException al intentar obtener texto del campo de entrada – Unity

NullReferenceException al intentar obtener texto del campo de entrada

– UnityAssets3Free

bienvenido , soy Daniel y aqui os traigo
nueva pregunta curiosa

Soy nuevo en unity y desea obtener un valor de un campo de texto de entrada. Encontré esta pregunta Obtener texto del campo de entrada en Unity3D con C#, pero cuando la ejecuto siempre aparece el mismo error: NullReferenceExcpetion: Referencia de objeto no definida para una instancia de un objeto. Parece un error estúpido y lo he intentado todo, pero no puedo solucionarlo. Mi código:

void Start () 
    var input = gameObject.GetComponent<InputField>();
    input.onEndEdit.AddListener(SubmitName);



private void SubmitName(string arg0)

    Debug.Log(arg0);

traté de poner InputField input; antes de la función de inicio y borrado var pero todavía no hay suerte. Si alguien me puede ayudar con este problema se lo agradecería mucho. Fotos de donde están adjuntos mis guiones actualmente.

2 respuestas 2

Su código es casi correcto, si usted echa un vistazo a la documentacióndeberías llamar a tu método con function antes de llamar al nombre del método. Me parece que estas mezclando c# y JSaquí está la función `js:

public class Example 
    public var mainInputField;
    public function Start() 
        // Adds a listener to the main input field 
        // and invokes a method when the value changes.
        mainInputField.onValueChange.AddListener(function() 
            ValueChangeCheck();
        );
    
    // Invoked when the value of the text field changes.
    public function ValueChangeCheck() 
        Debug.Log("Value Changed");
    

los c# solución:

public class MenuController : MonoBehaviour 

    [SerializeField]
    InputField inputText;

    // Use this for initialization
    void Start () 
        inputText.onValueChange.AddListener(delegate 
            DebugInput();
        );
    

    private void DebugInput()
        Debug.Log ("Input: " + inputText);
    

Mi jerarquía se ve así:

creé uno Canvas e insertó un InputField dentro de él El script con el código dentro se adjunta a la Canvas y el InputField conectado a [SerializeField] dentro del guión en Canvas.

te recomiendo que hagas tu InputField una variable de clase, para que pueda acceder a ella más fácilmente más adelante. Además, solo debe crear un [SerializeField] Para el tuyo InputField para que pueda arrastrarlo a su script. Esto también puede evitar algunos errores.

Cambie InputField (TMP) a InputField (heredado)

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

eso es todo,espero que te funcione

Deja una respuesta