Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Totemalf en 09 de Enero de 2018, 09:12:13 AM

Título: Duda sobre entrada de teclado en Unity
Publicado por: Totemalf en 09 de Enero de 2018, 09:12:13 AM
Buenas y Feliz año!

Mi duda es la siguiente, quiero guardar la tecla pulsada en una variable, ¿es esto posible?
Se que con el UI se puede hacer un recuadro para entrada de teclado, pero no es esto lo que quiero hacer.
Mi idea es ir guardando los caracteres ingresados en variables y luego aplicarlos a un 3d Text.
Pensé en hacer una serie de If para ir comprobando todas las teclas y números, o sea, cada vez que se pulsa una tecla comprobar las 39 posibilidades por medio de If... en plan If( Input.GetKey.......) Sé que así va a funcionar, pero no parece lo más optimo, supongo que tiene que existir alguna función o algo que permita hacerlo más fácil.

Un saludo y muchas gracias!
Título: Re:Duda sobre entrada de teclado en Unity
Publicado por: [EX3] en 10 de Enero de 2018, 12:56:43 AM
Buenas.

Prueba con esto:

https://docs.unity3d.com/ScriptReference/Input-inputString.html

Salu2...
Título: Re:Duda sobre entrada de teclado en Unity
Publicado por: Totemalf en 12 de Enero de 2018, 09:54:06 AM
Muchas gracias EX es exactamente lo que estaba buscando. Acabo de probarlo a groso modo y va perfecto:

string entradaTexto;
public string TextoGuardado;
   
   void Update () {
        entradaTexto = Input.inputString;
        TextoGuardado += entradaTexto;
   }
}
Ahora a currarlo un poco más para que haga lo del backspace y listo.

Muchas gracias!!!
Título: Re:Duda sobre entrada de teclado en Unity
Publicado por: Totemalf en 12 de Enero de 2018, 04:34:06 PM
Vale, este es el código que permite ingresar caracteres por teclado y borrarlos con backspace si queremos. Esto para mi era lo difícil, ahora lo aplicaré a un texto 3d para que mole más.

      string entradaTexto;
    public string TextoGuardado;
   
void Start () {

}

void Update () {

        if (Input.GetKeyDown(KeyCode.Backspace) && TextoGuardado.Length > 0)
        {
                TextoGuardado = TextoGuardado.Remove(TextoGuardado.Length-1, 1);
        }
        else
        {
            entradaTexto = Input.inputString;
            TextoGuardado += entradaTexto;
        }
       
}
Título: Re:Duda sobre entrada de teclado en Unity
Publicado por: Totemalf en 16 de Enero de 2018, 11:31:03 AM
El código ya aplicado a un texto 3d, y con un pequeño arreglo para que sea más eficiente:

string entradaTexto;
    public string TextoGuardado;
    TextMesh miTexto3d;
   
    void Start () {
        miTexto3d = GetComponent<TextMesh>();
}

void Update () {

        if (Input.anyKeyDown)
        {
            if (Input.GetKeyDown(KeyCode.Backspace) && TextoGuardado.Length > 0)
            {
                TextoGuardado = TextoGuardado.Remove(TextoGuardado.Length - 1, 1);
            }
            else
            {
                entradaTexto = Input.inputString;
                TextoGuardado += entradaTexto;
            }
            miTexto3d.text = TextoGuardado;
        }

    }