Noticias

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

Convertir de UI.InputField a UI.Text

Iniciado por ajdb, Febrero 09, 2016, 03:03:54 PM

Tema anterior - Siguiente tema
Hola,estoy intentando de trabajar con el valor de un InputField, para hacer unos calculos y reflejarlos a traves de un texto.Cuando intento hacerlo me sale este error:error CS0029: Cannot implicitly convert type `UnityEngine.UI.Text' to `UnityEngine.UI.InputField'A parte tambien me da error a intentar de pasar el InputField de string a int, lo he echo de esta manera:int.TryParse(GetValorEntrada, out resultadoCalculo);Se puede hacer fácil siendo los dos InputField, pero podría el usuario, introducir datos donde no debiera.Alguna solución?, gracias. 

Febrero 09, 2016, 03:33:22 PM #1 Ultima modificación: Febrero 09, 2016, 03:33:49 PM por hammer
Prueba con InputField.text, si quieres utilizar InputField y que no se pueda  modificar pon en true la opcion readOnly , inputfield.readonly = true  xDNo tengo unity delante, espero no cargarlo , pero prueba a ver

El InputField, si quiero que lo modifiquen, me explico mejor.Para hacer el calculo, un valor lo coge con un Dropdown, coje una opcion y cada una de ellas tiene un valor, hasta hay me funciona.El otro valor lo coge del InputField, y desde código modifico el texto, donde quiero que se muestren los resultados. Es como una calculadora.hammer, a lo que te refieres es que ponga dos InputField, y que en el que se muestren los resultado ponga a true la opcion de readOnly?. Seria buena opcion, no lo conocia. 

Pareciera que no estás trabajando con los textos en sí sino con los objetos UI.Text y UI.InputField, del dropdown sacas un string (no he usado el dropdown)? del InputField usas la variable .text? El GetValorEntrada es un string o un UI.InputField?

janma_teso, no he llegado a utilizar el dropdown, estoy intentando de solucionar esto antes. De todas formas el valor del dropdown me lo coge bien, no que no recoge son los valores del InpupFiel, y del Text. Creo que es lo que comentas, para solucionarlo como seria?, asi?: variabledelinput.text ??, y del texto, como recojo el valor, para modificarlo?.Los valores de entrada son del dropdown, (que aun no uso), y del Inputfiel.Por lo que me comentas estoy un poco perdido, y creo que tienes razón, no uso los valores, cuando hago un Debug, me sale el InputFiel, pero no su valor.Gracias, a ver si me puedes ayudar

Que es eso del dropdown?? perdonad mi ignorancia a veces no cojo la jerga de los programadores xDBueno , pos si noi, estas un poco perdido, te recomiendo que pares y te mires algunos tutos de programacion antes de seguir.Text y InputField son classes no valores, las dos se vienen de la clase UI que viene de la clase UnityEngine.  UnityEngine.UI.Text  UnityEngine.UI.InputField http://docs.unity3d.com/ScriptReference/UI.InputField.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/UI.InputField.htmlhttp://docs.unity3d.com/ScriptReference/UI.Text.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/UI.Text.htmlCada una con sus opciones(variables) y sus funciones,propias y heredadas. Para acceder al valor de estas dos clases tienes que acceder en los dos casos a su variable text, que en este caso es la que contiene el valor.myInputField.textmyText.text 

Es aconsejable tener la documentación abierta por si acaso InputField y Dropdown en tu caso, el valor que ingresan en el InputField es efectivamente variable.text, ese es el valor con el que tienes que trabajar, puedes hacer una función que reciba un string como argumento, luego se lo asignas al OnValueChange del InputField, esta función será llamada cada vez que el jugador escriba algo en el InputField. Luego simplemente trabajas con el argumento, pero tienes que tener en cuenta que el usuario puede pulsar cualquier tecla y meter valores no numéricos.
public void TeclaPulsada (string dts)
{
    Debug.log(dts);
}
Prueba a copiar esta función, luego se la asignas al OnValueChange del InputField para que te hagas una idea.

Lo malo es que no deja operar con los datos introducidos, ya que lo considera string.La entrada la he restringido a solo numerica en "Content Type", pero las sigue considerando string.He probado con lo que comentas juanma_teso, y funciona, y lo sigue considerandolo string, y no puedo operar con ello. Ya revise la documentación, y no lo probé por que no sabia lo hacía esactamente.De esa manera con  los delegados he echo el dropdown.

Yo te aconsejaría que primero trabajaras con string, asegurar que todo sean números y luego hacer el 'int.Parse()'. No sabía que se podían restringir desde el inputField, eso que te ahorras, ahora prueba a crear otra variable int y hacer el parse, si no te da ningún error ya lo tienes.

Para el cambio tambien he usado de todo, y no va int resultado = int.Parse(entradaValor.text);resultado = int.Parse(entradaValor.ToString());...Fncionar, funciona, el Text me muestra el valor del Input, ahora lo que hace falta es pasar de string a int.Ha cambiado algo con Unity 5?   

Esa función pertenece a las librerías de C#, no se si te de algún error, podrías probar a sumar +1 a la variable resultado y luego hacer otro debug, a ver si efectivamente no te está haciendo el cambio, de todas formas espero que no estés "aplastando" el valor 'entradaValor.text' con 'entradaValor.ToString()' ya que no son lo mismo!! El segundo no tiene porqué dar el valor dentro del input.

Hola juanma_teso, gracias por tus respuestas.He probado lo que me comentas de sumarle 1, y me da el error de que no se puede sumar ya que es un tipo InputFiel y no es un entero. No lo convierte en entero de ninguna de las maneras.He probado varias formas que he visto en las librerias de C# y en tutoriales, y ninguna me funciona. Seria de alguna manera distinta siendo InputField?¿Me puedes decir donde puedo ver la solución, o como solucionarlo?

 Estoy remirando todo y es algo del InputField. He intentado de cambiar el valor asi:int.TryParse(entradaValor, out resultadoCalculo);entradaValor es el InputField, y resultadoCalculo es una varible entera.Me da un error en entradaValor =>  cannot convert from 'UnityEngine.UI.InputField' to 'sting'Si hago lo mismo pero con un string creado por mi, no me da problemas, es algo del InputField.Alguna solución? 

Febrero 10, 2016, 01:34:10 PM #13 Ultima modificación: Febrero 10, 2016, 01:36:22 PM por hammer
Noi!!! pon el cacho de codigo si quieres y te lo ponemos, a ver si asi lo ves que te veo perdidillo.Repito  

Siempre recomiendo primero estudiar programacion antes de querer meterse en otras historias (como por ejemplo querer hacer un videojuego), y es una recomendacion desde la mas buena intencion aunque alguna gente se ofenda ... eres el mejor ejemplo de que seguir mi consejo es de ser una persona inteligente y razonable; 3 años con Unity y no sabes algo que es de las primeras cosas que se aprenden en POO.Has intentado por ejemplo alguna vez utilizar un tenedor para clavar un clavo (como si fuera un martillo), o un folio de papel para resguardarte de la lluvia (como si fuera un paraguas) ? Ya se que son ejemplos muy chorras, pero es lo que estas haciendo en tu codigo.Hubieras perdido un par de meses en aprender programacion cuando empezaste con Unity ... y 3 años mas tarde no te verias con este problema; sin mencionar que viendo este problema y no saber lo que sucede (repito que es de las primeras cosas que se aprenden en POO), que problemas no tendras.En cualquier caso suerte

Etiquetas: