Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Input Field teclado

Iniciado por Siam, Diciembre 01, 2016, 02:29:08 PM

Tema anterior - Siguiente tema
Tengo unos campos input field para configurar las teclas de juego, pero quiesiera que esos campos mostraran la tecla que pulso no lo que escribo, es decir si pulso la tecla espacio me aparezca Space o un espacio en blanco. Alguien sabe como se puede hacer.

todo caracter que vos ingresas por teclado corresponde a un caracter ASCII, podes ingresar algo en el Input field, comparar el caracter que ingresaste, si es por ej Space corresponde al numero 32 (aca una de las tablas ascii http://ascii.cl/es/ , proba poner alt+3+2 y se hace un espacio) imprimi "Space". Eso si se vuelve tedioso hacerlo para todos los caracteres.
 
No se si necesariamente necesitas un InputField, fijate que en los juegos simplemente te pide que apretes la tecla que quieras cuando estas por modificar un valor.
 
Lo mejor es detectar el KeyCOde que ingresas, en Unity ni idea como se hace, despues de una googleadita o dos seguro lo sacas. En SDL me acuerdo que lo sabia, ya me lo olvide jajaj.
 
Saludos 
 
 


Con Input.GetKey le tienes que decir que tecla se va a pulsar. Lo que yo queria es sin saber que tecla se va a pulsar te diga que tecla has pulsado y ya he encontrado como :)
 
Aquí edjo el enlace por si algiuen lo necesita
 
http://answers.unity3d.com/questions/629579/how-do-i-set-a-variable-to-the-key-im-pressing.html


Ah mira, gracias por el link, era algo asi en SDL, calculo que Unity utiliza alguna API parecida, sino la misma por es todo casi identica
 

lastKeyPressed = e.keyCode.ToString ();

 
 

Lo unico malo es que no detecta todas las teclas, por ejemplo en un input.field si pulsas el espacio te pone space pero si pulsas el sift no pone nada aunque dentro de los keycode si existe el keycode.sift, luego hay teclas como la Ñ que en vez de ponerte Ñ pone 163 y cosas asi.

Probalo sin el Input.Field, simplemente que reconozca las teclas que presionas e imprima el nombre

Pero para escribir el usuario la tecla que quiere usar necesita un input field, o hay otra manera?

No, el input field es para guardar una string que ingresa el usuario como datos (nombre, email, contraseña,etc) , si queres guardar una tecla, podes hacer aparecer un mensaje que diga "presione la tecla que quiere asignar" , el usuario lo hace y se guarda.

Claro pero el problema es que al pulsar el shift en la variable que guarda la tecla que has pulsado (la muestres luego o no), no guarda nada, esta vacia.

Pfff es cierto, probé con todas las teclas y funciona perfecto (Hasta con Alt y AltGr), menos con shift jaaj
 
La unica solucion que encontre fue usar esto:
 

if (e.shift) {         
      GUILayout.Label ("leftShift!!");
}

 
e.shift es una bool que es true cuando shift esta presionado, con esto deberias reconocerlo ahora.
 
Saludos

con e.shift en el update funciona, pero en OnGUI no. En update no me sirve tal como lo tengo.
 
Pincho en el input field para que el se escriba la letra y al cambiar el valor va a un metodo y alli cambio, pero desde el update no puedo acceder a ese inputField
 
Vale fallo mio xD estaba tratando a e.shift como un evento keydown y no lo es

El manejo de eventos esta pensado para funcionar en OnGUI , OnSceneGUI, etc... no en update, a mi me anda en onGUI, seguro tu Unity es chino jajaj

Lo esaba haciendo mal estaba cogiendo el e.shift como un evento keydown

Etiquetas: