Jump to content
UnitySpain
lozdanmultimedial

Instanciar un InputField por scripting

Recommended Posts

Estimado Compañeros de Foro:

Les escribo a ver si me pueden ayudar en lo siguiente:

De lo que voy a exponer a continuación algunas cuestiones ya las tengo solucionadas pero tengo que dar una explicación general antes de preguntar sobre la cuestión concreta:

Estoy programando un chatbot entre un FPC y un NPC, el chatbot es un script adjuntado al NPC, se activa cuando el FPC ingresa al Collider del NPC y finaliza cuando el FPC egresa del Collider ( solucionado ). Un detalle, el NPC responde disparando archivos de audio, no con texto en pantalla ( solucionado).

El problema a solucionar:

La idea es que cuando el FPC ingrese al Collider del NPC se instancie por script un InputField editble por el jugador el cual ingresa un texto por teclado, con un botón “send” que indique q la edición terminó y asi en loop hasta que el FPC oprima un segundo botón “Fin de la conversación” en cuyo caso todos los elementos de esta UI deben destruirse.  Esta es la cuestión a solucionar. Un detalle, los InputField que se instancien se sobreesccriben uno sobre otro dado que no deseo que se visualize toda la secuencia de la conversación sino solo el IF actual.

 

Este pedido es en el marco de mi tesis de posgrado en “Magister en Tecnologia y Estetica del Arte Electronico” UNTREF  Buenos Aires Argentina. Si deseas leer una descripción del proyecto puedes leerlo en el Facebook buscando “Claudio lozdan tesis 2016”

Desde ya muchísimas gracias  a todos Prof. Claudio Lozdan

 

 

Share this post


Link to post
Share on other sites

Es más sencillo que actives y desactives el inputField, así lo configuras en el editor, posición, tamaño... una vez terminado el chat desactivas todo el GameObject y lo dejas ahí, no te va a colapsar la memoria y es más fácil que instanciar cada vez. Para activar/desactivar un GameObject de la jerarquía necesitas una referencia a ese GameObject, link a la api. Para el botón igual, lo puedes poner como hijo del inputField, de esta manera estará activo al tiempo que el inputField. En el inspector, puedes escoger una función pública cuando el botón sea pulsado, ahí debe ir tu función de enviar el inputField.

Share this post


Link to post
Share on other sites

GRAciasp or tu respuesta Juanma_teso.

He mirado el link a la api y por lo que veo esto podria servir para activar y desactivar el chat, a ver si he entendido: cuando el FPC ingresa al collider del NPC entonces GameObject.SetActive = true; y entonces aparece el chat ( el primer inputField ) al salir del Collider entonces en el srcpit hago que GameObject.SetActive = false; entonces todo el chat queda desactivo, entendi bien ??

Si esto es asi queda pendiente como hacer que el input field  se sobre escriba,  o se reinicie "limpio" o se re instancie

lo que tego que hacer es esto, hago un esquema del flujo del chat enre el FPC y el NPC:

1) El FPC ingresa al Collider del NPC

Repetir 4 veces

{

       2)El NPC medinte un audio "canta" una pregunta al FPC --> "QUien eres tu ?       ( solucionado)

       3) El FPC responde ingresando su respuesta en un InputField editable apreita el boton "send"

}

obviamente no estoy preguntando por la estructura iterativa en si sino como hacer  si es posible usar un solo inputField en el paso 3.

 

desde ya muchisimas gracias.

 

 

Share this post


Link to post
Share on other sites

Cuando salgas y desactives el inputField, o después del paso 2, puedes limpiar lo que contenga el inputField, la variable text del inputField es el texto que el jugador escribe, si la igualas a un string vacío se borra, por ejemplo 'inputfield.text = "";'

Share this post


Link to post
Share on other sites

×
×
  • Create New...