Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Duda sobre entrada de teclado en Unity

Iniciado por Totemalf, 09 de Enero de 2018, 09:12:13 AM

« anterior - próximo »

Totemalf

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!

[EX3]

José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Totemalf

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!!!

Totemalf

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;
        }
       
}

Totemalf

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;
        }

    }






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.