Hasta ahora, tenemos un agente que puede juntar una cadena de acciones para satisfacer un solo objetivo, y podemos
saber qué pasa con esos objetivos.
Si miramos en la consola en este momento, lo que nos da una pequeña idea de los planes para
el agente.
Además de esto, he creado un archivo adjunto como recurso a este video Visualizador de Agentes.
Así que si descargas eso.
Zip, descomprimirlo y luego simplemente arrastrar y soltar esa carpeta en sus activos.
Espera.
En primer lugar, deberíamos dejar de hacer pausas y jugar a arrastrar y soltar eso.
Así que es el agente visualizador aquí.
Ahora, el Visualizador de Agentes tiene dos scripts en él tiene un script, que es el visual del agente
que puede adjuntar a cualquiera de sus agentes.
Y luego hay un editor del agente G que tiene que ir a una carpeta que se llama editor.
Así que vuelve a tus activos y crea una nueva carpeta, llama a ese editor y luego abre eso y toma ese editor
de agentes G y arrastra y suelta eso en el editor.
Parece que ya tenía editor allí.
Así que esa está ahora vacía.
Voy a borrar eso.
De acuerdo.
Así que ahora que tenemos eso, usted puede agarrar su agente G visual y si hace clic en su paciente
arrastrar y soltar que en el inspector.
Y entonces vamos a asegurarnos de que ponemos estos cambios de nuevo a nuestro prefabricado.
Así que ve a la parte superior del inspector y donde tienes los overrides, sólo haz clic en eso y hay un botón
de aplicar todo al lado y eso se asegurará de que todos los pacientes que obtienen el spawn de tus
prefabs tienen las mismas cosas en ellos.
Ahora bien, este visual del agente G en realidad utiliza el código del editor del inspector, que no voy a revisar en
este curso.
Pero si te interesa, supongo que puedes echar un vistazo al código.
Ahora, si pulsamos el play, verás que y luego lo pones en pausa que este visual del agente realmente te muestra cuál es la
acción actual, cuáles son los objetivos que el agente está tratando de satisfacer, y las acciones que tiene
ahora.
Actualmente no está imprimiendo el plan, pero no hay razón para no hacerlo.
Y si echas un vistazo a la secuencia de comandos, entonces te dará una idea bastante decente de cómo agarrar los datos
de su agente y realmente ponerlo en esta pequeña área.
Pero acabo de crear esto para ayudarme a asegurarme de que puedo ver todo y de que también podemos ver muy rápidamente
las condiciones previas y los efectos y para asegurarnos de que las cosas están escritas correctamente y de que todas
las cosas se van a alinear cuando empecemos a pulsar el play.
Ahora es el momento de programar a la enfermera y aquí es donde las cosas empiezan a ponerse interesantes.
La enfermera no puede entrar en acción para atender a un paciente hasta que haya un paciente esperando.
Así que en primer lugar, vamos a crear nuestro script de enfermera al igual que tenemos nuestro script de paciente, y luego vamos a trabajar
en él desde allí.
Así que vamos a tomar el script del paciente y el control D para hacer una copia de él.
Entonces la llamaremos enfermera y la abriremos.
Cambia de paciente a enfermera.
Así que la enfermera va a ejecutar el inicio de la base, al igual que el paciente.
Pero el objetivo en este caso no es esperar, sino tratar al paciente.
Y luego añadimos el gol.
Así que, de momento, dejaremos un solo gol.
Así que guarda eso.
Volvamos a la unidad y la uniremos a nuestra enfermera solitaria que tenemos actualmente.
Así que agarra eso y pónselo a la enfermera.
Ahora la acción de la enfermera para conseguir al paciente será la primera que escribamos.
Así que vamos a agarrar uno de los pacientes, como ir al hospital y copiarlo.
Control.
DX Y voy a llamarlo "Get Patient".
Luego abre eso y cambia el nombre de la clase.
Para conseguirlo.
Paciente.
Y luego lo guardaremos.
Vuelve a Unity y adjunta eso a nuestra enfermera.
Así que tener paciencia está ahí.
Ahora el nombre de la acción será get patient así que podemos nombrar eso allí get patient.
Y nuestros efectos posteriores por ahora serán.
El gol que acabamos de añadir.
Así que vamos a añadir uno y lo llamaremos Treat.
El paciente va a ser nuestro efecto posterior.
Bien, ahora necesitamos una condición previa.
¿Cuál es la condición previa que vamos a establecer?
Bueno.
La enfermera no ha hecho nada para provocar esto.
En realidad, necesitamos que el mundo lo desencadene o que algo cambie en el mundo para desencadenarlo.
Así que en estas precondiciones, lo que voy a hacer aquí es añadir una, y la precondición
en este caso va a ser la espera o la espera paciente.
Así que tenemos esto esperando.
¿De dónde va a salir la espera?
Entonces, ¿de quién será el objetivo o el estado?
El estado del mundo será el que se desencadene cuando el paciente empiece a esperar.
Así que lo que tenemos que hacer es ir a nuestro código de espera de los pacientes y en el puesto realizar.
Lo que vamos a hacer aquí es añadir un estado mundial.
Así que g mundo.
Punto de ejemplo, punto de obtener el mundo.
Modificar el punto.
Estado de espera.
Uno.
Así que va a añadir un paciente que estará esperando.
Así que ahora que el paciente va a inyectar este estado de espera en el mundo, vamos a volver y empezar
a monitorearlo.
Y ahí es donde entra en juego este elemento de lona que ha sido desactivado aquí causando algunas advertencias
a lo largo.
Así que vuelve a encender ese lienzo.
Verás que hay un cuadro de texto llamado Estado del Mundo.
Y esto es sólo para mostrar lo que son los estados del mundo y puramente para que lo veas.
Y cuando ya no lo uses, puedes apagarlo.
Pero tenemos que actualizar los estados del mundo a lo que hay en el Diccionario de Estados del Mundo.
Y eso significa escribir este guión que falta abajo.
Así que vamos a hacer clic derecho aquí y vamos a crear un nuevo script llamado Update World.
Lo abro y va a ser muy corto.
Lo primero que va a hacer es recibir el texto.
Así que el texto público dice.
Y luego, en la última actualización, haremos esto porque no queremos hacerlo muy a menudo.
Deshazte del comienzo.
Y luego queremos un diccionario que es, por supuesto, nuestra cadena int y estados del mundo.
Equivale a la instancia de punto G del mundo, punto obtener el mundo punto obtener los estados.
Ahora usted podría usar esto directamente en el siguiente para cada declaración que vamos a crear,
pero sólo lo he hecho allí para hacer el código sólo un poco más corto y luego vamos a poner los estados
punto de texto.
Es igual a vacío.
Deshazte de ese texto.
Y luego aquí abajo, queremos para cada par clave-valor, que será una cadena y un int s en los estados del
mundo.
Y entonces sólo pondremos estados punto texto más igual a la tecla s.
Así que esa es nuestra cadena más un espacio de comas más un valor en caso de que realmente estés usando ese valor.
Y como lo estamos modificando, se actualizará a medida que vayamos añadiendo pacientes.
Así que va a ir a la espera de una espera a la espera a través de y realmente le dirá cuántos están
esperando y.
Y poner una nueva línea allí ahora con el fin de acceder a este texto que no parece gustar.
No olvides que en la parte superior vamos a necesitar usar unity engine dot UI para recoger ese texto y esos
errores deberían desaparecer.
Si redefinimos eso como un texto.
De acuerdo, bien.
Así que guarda eso.
Volvamos a la unidad.
Y lo que vamos a hacer es hacer clic en nuestros estados del mundo, el objeto en la jerarquía y acaba de poner que la
secuencia de comandos que falta de nuevo en donde estaba.
Y el componente de texto, que está aquí arriba, puedes arrastrarlo y soltarlo en la caja de estados.
Así que es este que está en el mismo objeto en los estados.
Y ahora cuando lo ejecutamos, vamos a ver que cuando nuestro paciente entra y va a la sala de espera, entonces
vamos a obtener la espera, que aparece aquí con un número.
Así que esperemos a que uno de estos tipos entre ahí.
De acuerdo.
Aquí está.
Ahora está ahí dentro.
Esperar y esperar es uno, dos.
Y mientras se agrupan y recuerdan, en realidad tienen que dar en el clavo para que se les clasifique
como espera.
Pero al final está creciendo.
Así que ahora es este estado particular aquí que queremos afectar a la enfermera e inyectar de nuevo en las enfermeras,
obtener la acción del paciente.
Ahora bien, eso es lo que está ocurriendo de hecho.
Pero, ¿por qué se mueve la enfermera?
Bueno, no hemos fijado el objetivo de las enfermeras.
El objetivo tiene que ser el paciente que la enfermera tiene que recoger.
Pero sólo para probar que la enfermera está realmente ejecutando este conseguir paciente.
De momento vamos a darle el objetivo a la enfermera de esa sala de espera para que se dirija hacia allí.
Pero no es el camino correcto porque queremos que encuentre a su paciente real.
Así que vamos a probar esto de nuevo y vamos a pulsar el play ahora mientras esperamos que estos chicos entren.
Espero no estar siendo demasiado tendencioso o sexista, o como quiera que se llame, al llamar a la enfermera
"ella" y al paciente "él", pero a mí me parece que se parecen, así que voy a seguir con ello.
Bien, aquí vamos.
Aquí viene nuestro paciente.
Está ahí, debería activar a la enfermera.
Y ahí va la enfermera a la acción, corriendo ese particular conseguir paciente.
Ahora, no va a hacer nada más porque eso es todo.
Es lo único que sabe hacer.
Pero sólo va a la sala de espera, no a por el paciente.
Así que añadiremos esa funcionalidad cuando volvamos en la próxima conferencia.