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.
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.htmlhttp://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 (http://docs.unity3d.com/ScriptReference/UI.InputField.html) y Dropdown (http://docs.unity3d.com/ScriptReference/UI.Dropdown.html) 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?
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
Voy a resumir todo lo que he intentado explicarte en: USA LA VARIABLE 'ENTRADAVALOR.TEXT' NO LA VARIABLE 'ENTRADAVALOR'. La primera es un string de lo que hay escrito dentro del InputField, la otra es el InputField en sí, un objeto que además de la variable '.text' tiene varias variables y métodos, por eso te da error!
[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35117" data-ipsquote-contentcommentid="126987 date=1455108928]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[/quote]Arthure, no me siento ofendido ni mucho menos, pero aunque hayas visto que llevo 3 años con unity, yo tengo mi trabajo y no estoy todos los días con ello. He hecho algunos cursos de programación pero son todos básicos, por que donde vivo no hay otra cosa, a no ser online, y no es lo mismo que tambien he echo alguno. Por eso lo que hago es intentar de aprender a base de errores, por que ya se 20 maneras, de como no se hace lo del InputField, ahora solo me queda aprender el como si se hace, y eso es gracias a vosotros. Cada uno tiene una situación y no se puede juzgar a la ligera, pero gracias por el consejo, que ya lo tenia en cuenta. Si sabes de algún sitio donde pueda aprender el scriptin de Unity te lo agradezco.
[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35117" data-ipsquote-contentcommentid="126988">Voy a resumir todo lo que he intentado explicarte en:
USA LA VARIABLE 'ENTRADAVALOR.TEXT' NO LA VARIABLE 'ENTRADAVALOR'. La primera es un string de lo que hay escrito dentro del InputField, la otra es el InputField en sí, un objeto que además de la variable '.text' tiene varias variables y métodos, por eso te da error![/quote]Esta mañana me fui a dar una vuelta, y como no dejas de pensar, con el aire fresco, estaba cayendo en el error (//Smileys/invision/default_smile.png%20date=1455110512%5D%5Bquote%20author=hammer)Noi!!! pon el cacho de codigo si quieres y te lo ponemos, a ver si asi lo ves que te veo perdidillo.Repito [/quote]Te dejo el codigo:
Título: Convertir de UI.InputField a UI.Text
Publicado por: juanma_teso en Febrero 10, 2016, 08:06:38 PM
A ver, empecemos por lo que tienes mal, el Start es una función que se llama en todos los Scripts que escribas una sola vez al principio del juego, antes de que te de tiempo a escribir nada en el InputField, por eso no habrá nada en entradaValor.text ni tampoco nada en resultadoCalculo, si quieres saber más de cómo funciona, manual. Esas dos líneas que tienes en el Start las tienes que ejecutar cuando haya algo en el InputField, fíjate en la imagen, en la parte inferior hay dos campos en los que pone, On Value Change (string) y End Edit (string), eso son dos eventos de Unity, si haces una función (como CalculoIG) con esas mismas dos líneas y las llamas en cualquiera de las dos, se ejecutarán, ¿cómo haces eso? Le das al '+', seleccionas el objeto que tenga el script que estás haciendo y seleccionas la función. (http://docs.unity3d.com/es/current/uploads/Main/UI_InputFieldInspector.png)Prueba y comentas.
[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35117" data-ipsquote-contentcommentid="127000">A ver, empecemos por lo que tienes mal, el Start es una función que se llama en todos los Scripts que escribas una sola vez al principio del juego, antes de que te de tiempo a escribir nada en el InputField, por eso no habrá nada en entradaValor.text ni tampoco nada en resultadoCalculo, si quieres saber más de cómo funciona, manual. Esas dos líneas que tienes en el Start las tienes que ejecutar cuando haya algo en el InputField, fíjate en la imagen, en la parte inferior hay dos campos en los que pone, On Value Change (string) y End Edit (string), eso son dos eventos de Unity, si haces una función (como CalculoIG) con esas mismas dos líneas y las llamas en cualquiera de las dos, se ejecutarán, ¿cómo haces eso? Le das al '+', seleccionas el objeto que tenga el script que estás haciendo y seleccionas la función. .Se lo he añadido a On Value Change, y funciona correctamente.Gracias a todos, por la ayuda.Si sabeis de algún sitio donde pueda aprender el
Título: Convertir de UI.InputField a UI.Text
Publicado por: juanma_teso en Febrero 10, 2016, 09:29:18 PM
Si quieres aprender a programar no hace falta que sea en Unity, sino como te dijeron más arriba, basta con que sea orientada a objetos.
Cita de: ajdb date=1455133131" data-ipsquote="" data-cite="ajdb" class="ipsQuote">Si sabeis de algún sitio donde pueda aprender el
Sólo texto | Texto con Imágenes