En este vídeo, vamos a empezar a añadir los cubículos como recursos disponibles para el paciente y la
enfermera.
En primer lugar, lo que tenemos que hacer es ir a nuestro mundo.
Así que g world y añadir aquí una cola de cubículos, de la misma manera que tenemos esta cola de pacientes.
Ahora, voy a dejar eso como un reto inicial para que lo hagas, y me gustaría que pensaras
en la configuración del cubículo y en cómo los valores de cada cubículo que ya está en el mundo
del juego van a entrar en la cola en primer lugar porque no son como los pacientes que pueden
inyectarse allí cuando sus objetivos se han logrado o una acción llega a un determinado lugar.
Bien, entonces vete y trata de hacer eso.
Así que añade una cola y añade todas las piezas necesarias que deben ir a lo largo de toda esta clase
de mundo G con el fin de cuidar de esa cola.
Y cuando volvamos, te enseñaré cómo hacerlo y montarlo.
Así que ponle pausa al video ahora y buena suerte.
Bienvenido de nuevo.
¿Cómo te fue?
Bueno, en primer lugar, tenemos que crear una cola, por lo que debe ser
bastante sencillo para usted, que es para copiar los pacientes, colóquelo allí y lo llaman cubículos.
De acuerdo.
Entonces podemos seguir adelante.
Y en el mundo es construir esa cola.
Así que vamos a tomar eso y hacer una copia de ella y vamos a llamar a eso cubículos también.
De acuerdo.
Entonces necesitamos dos ayudantes, que son nuestro cubículo de adición y cubículo de eliminación.
Así que los copiaremos y los pondremos aquí.
Así que los renombraremos como añadir cubículo y eliminar cubículo y luego también cambiaremos las colas dentro de estos
para que tengamos los correctos.
Cubículo y cubículo.
Sí.
Así que ahora tenemos que rellenar esa cola porque estos cubículos son cosas que existen en el entorno
del juego.
Así que una forma de hacerlo es escribir un guión que se pone en cada cubículo.
Así que como recurso tiene un pequeño script, y luego dice en el método de inicio
es decir algo así como Gee, cubículos mundo, ad cubículo y luego se inyecta en esa cola, que está bien.
Eso funcionaría bien y estaría bien si quisieras añadir cubículos dinámicamente en el mundo.
Pero lo que vamos a hacer aquí es recoger todos los cubículos que hay en el mundo.
Así que vamos a hacer una matriz de objetos de juego y vamos a llamar a este cubos igual objeto de juego punto encontrar objetos
con la etiqueta.
Recuerda que todos esos cubículos están etiquetados con cubículo con C mayúscula para que podamos recorrer
el entorno y recoger los que ya existen.
Entonces podemos hacer un bucle a través de ellos.
Así que para cada objeto de juego ver en cubos, cubículos punto en la cola.
Así que los metemos en la cola y ponemos C en esa cola.
Entonces, después de eso también necesitamos insertar un estado en el mundo sobre los cubículos y si están libres o no, al igual
que si un paciente está esperando.
Así que inicialmente vamos a decir que si los cubos de la longitud del punto.
Es mayor que cero.
Entonces queremos poner mundo.
El punto modifica el cubículo libre del estado.
Cubos a lo largo.
Y luego, cuando eso entra en los estados del mundo, automáticamente es recogido por nuestro pequeño actualizador que lo pone
en esa sustancia pegajosa que está en la pantalla.
Muy bien.
Así que guarda eso y vuelve a cambiar a unity.
Y sólo queremos comprobar que funciona.
Así que pulsa el play.
Y como el mundo lo hace por sí mismo, no dependemos de ninguno de nuestros agentes que actualicen el Estado.
De acuerdo.
Así que ahora puedes ver que dice cubículo libre y hay tres disponibles y por lo tanto podemos usar cubículo libre, algo
que nuestro paciente o nuestra enfermera está buscando para hacer otra acción por lo que puede ser una precondición.
Así que ahora tenemos este nuevo recurso en el medio ambiente.
Así que no es un agente y no es un objetivo o sub-objetivo.
No es realmente un estado, pero su existencia provoca un estado.
Así que los cubículos están causando un estado de cubículo libre o supongo que no hay cubículos libres, que es un poco, supongo
que lo contrario.
Y por lo tanto, necesitamos otra forma de organizar estas cosas que los agentes necesitan en ellos o disponibles para
completar una tarea.
Y ahí es donde entra la idea de un inventario.
Así que en nuestra carpeta GOOP, lo que vamos a hacer es crear un inventario.
Así que vamos a ver la tienda y lo llamaremos un inventario G sólo para mantener la forma en que hemos estado codificando hasta ahora con las convenciones
de los nombres.
Ahora, el inventario en sí mismo no es un comportamiento mono y por lo tanto no tendrá un inicio y una actualización.
Así que básicamente se trata de llevar una lista.
Así que una lista de objetos del juego, que serán nuestros artículos que podemos poner en nuestro inventario o mochila
o como quieras llamarlo.
Así que vamos a llamarlo ítems y va a ser igual a una nueva lista de objetos del juego.
Ahora va a requerir tres ayudas o funciones.
Y vamos a deshacernos de eso, como siempre, poner eso ahí.
De acuerdo.
Así que va a tener un elemento público vacío de adición.
Y le damos un ojo de objeto de juego.
Y va a añadir que a sus artículos, que es bastante sencillo, ya que es sólo artículos no agregan.
Y entonces yo el siguiente va a ser un objeto de juego público que devuelve y será encontrar.
Elemento con etiqueta dada la cadena de etiquetas de la misma.
Sí.
Así que para encontrar el elemento aquí, vamos a hacer un bucle a través de él.
Así que para cada objeto de juego I en artículos.
Si no etiqueto equivale a etiquetar.
Entonces vamos a devolverlo.
Regreso I.
De lo contrario, vamos a terminar nuestro bucle completo sin haberlo encontrado y devolveremos un null para que sepamos que ese
artículo no está en nuestro inventario.
Por último, vamos a tener una eliminación.
Así que tenemos la capacidad de ponerlo en el inventario.
Ahora tenemos que sacarlo.
Así que.
Vacío público.
Quita.
Artículo.
Objeto del juego.
I.
Y esto es que necesitamos, en primer lugar, encontrar el índice de ese elemento en particular.
Así que el índice para eliminar es igual a menos uno, lo que significa que en realidad no hemos encontrado ese elemento para eliminar para
cada uno.
Objeto del juego.
O en los artículos que luego van a establecer el índice para eliminar los iguales.
Además, para incrementarlo.
Y luego si igualo el elemento por el que pasamos, que es una IA, que es una mala idea llamarlos así
no.
Llamemos a éste G de objeto de juego y pongamos G aquí abajo en su lugar.
Y si ese es el caso, entonces vamos a salir con el conjunto de índices para el que realmente acaba de coincidir
y luego vamos a ir.
Si el índice a eliminar es mayor o igual a menos uno, entonces podemos hacer un punto de eliminación de elementos en.
Índice para eliminar.
Ahora tenemos que hacerlo de esta manera en la que hacemos un bucle a través de todo el asunto primero y luego lo eliminamos usando
su índice después.
Porque a las listas no les gusta que les quiten cosas de en medio cuando las recorres en bucle.
Por eso lo hemos hecho así.
Bien, ese es nuestro inventario G, así que guarda eso.
Ahora que todos los agentes van a requerir acceso al inventario.
Vuelva a su script CSS del agente G.
Y en la parte superior vamos a añadir un nuevo elemento que será nuestro inventario.
Así que el inventario público de G equivale a un nuevo inventario de G, ¿verdad?
Así que ahora todos nuestros agentes, los pacientes y las enfermeras tendrán acceso a poner cosas en el inventario y
comprobar que las cosas están en el inventario.
Ahora, la pregunta es: ¿cuándo nos hacemos con el cubículo y lo ponemos en nuestro inventario?
No lo quieres ahí todo el tiempo porque los cubículos sólo pueden ser propiedad de un paciente a la vez o de
una especie de pareja enfermera-paciente.
Lo que vamos a hacer en este caso particular, y esto no es la única manera que usted podría
hacerlo, pero en primer lugar, vamos a tener la enfermera antes de que incluso se inicia el plan de obtener el paciente, y se convertirá en
un plan.
Actualmente, sólo tenemos una tarea.
Vamos a añadir una segunda condición previa.
Así que no queremos que el plan pueda empezar hasta que también haya un cubículo libre.
Así que añade el cubículo libre ahí.
Asegúrate de que la ortografía es correcta, exactamente la misma que se acaba viendo aquí arriba cuando se añaden
los cubículos al estado del mundo.
Así que ahora tenemos esta condición de que sabemos que hay un cubículo libre en el mundo cuando el paciente está
corriendo.
Ahora el agente tiene un inventario, entonces las acciones pueden obtener ese inventario del agente.
Pero tendrías que hacer una llamada al componente para conseguirlo.
Así que lo que quiero hacer en esta clase de acción G es en realidad sólo agarrarla aquí también para
que podamos referirnos a ella sin tener que escribir un código tan largo o ir a la versión optimizada de ejecutar el componente
get cada vez que lo necesitemos.
Así que es G inventario en nuestras acciones.
Y eso va a apuntar de nuevo al agente que lo tiene.
Así que aquí arriba, cuando estamos construyendo nuestra acción, vamos a añadir allí.
En realidad, no lo estoy haciendo en el constructor, lo estoy haciendo en el awake y aquí tendremos
inventario igual a este componente dot get.
Que será nuestro agente.
Inventario del DOT.
De acuerdo.
Así que eso va a hacer que sea mucho más fácil trabajar e ir a por el paciente.
Así que abre eso.
Y lo primero que vamos a hacer es conseguir un recurso.
Y de hecho ya he empezado con este código.
Puedes verlo ahí.
El recurso va a ser lo que quieras poner en tu inventario.
Y en este caso, en get patient, resulta ser el cubículo.
Así que vamos a conseguir el cubículo después de que el objetivo haya tenido éxito o haya fallado porque si no conseguimos
el objetivo, no necesitamos un cubículo.
Así que bajemos aquí y agreguemos en resource equals g world dot instance dot remove cubicle y eso le dará a nuestro
recurso un puntero al cubículo que está primero en esa cola.
Ahora también queremos comprobar si es nulo o no.
Así que, en primer lugar, diremos que si el recurso no es igual a null, entonces vamos a añadirlo al inventario de enfermeras.
Así que el punto de inventario añadir elemento.
Recurso.
Y si es nulo, si el recurso es igual a null.
Lo que supongo que podría ser una declaración L, no podría.
Tiene más sentido, porque si no es nulo, será nulo.
Vale, pues vamos a deshacernos de lo demás.
Si resulta ser nulo en este caso, entonces g world.
Punto de ejemplo, punto de añadir paciente.
Objetivo.
Así que lo que estamos haciendo aquí es que si no podemos conseguir el cubículo,
también vamos a liberar al paciente porque ya no lo necesitamos y todo el prepliegue va a fracasar.
Así que también vamos a establecer el objetivo aquí para igualar ahora y luego vamos a devolver un falso.
Ahora bien, si llegamos más allá de esto y estamos aquí abajo, significa que estamos, de hecho, tenemos un estado verdadero.
Teníamos un cubículo libre, le quitamos un cubículo.
Así que tenemos que afectar también al estado mundial.
Así que.
Mundo G.
Ejemplo de punto.
El punto consigue el mundo.
Modificar el estado de los puntos.
Y aquí vamos a ser cúbicos libres y vamos a hacer modificador de menos uno.
¿Y qué va a hacer eso?
Bueno, va a reducir la cuenta que está en esa condición mundial en uno.
Ahora, recuerde, de vuelta en Modificar el Estado en este ejemplo en particular, lo tenemos de manera que si llega
a cero, en realidad elimina el estado completamente fuera del medio ambiente.
Por lo tanto, cuando se agoten los cubículos, no habrá cubículos en el estado porque los estamos retirando
a medida que los recogemos aquí.
Ahora, ¿qué va a haber en el puesto de ejecución?
Bien, si hemos pasado y hemos realizado la acción con éxito, entonces en el Post perform, queremos
quitar un paciente en espera.
Así que mundo G.
La instancia de enseñanza no tiene mundo.
El estado de modificación y en este caso su espera.
Y menos uno.
Y luego también vamos a decir que si tenemos un objetivo, que en este caso es nuestro agente que nos hemos
dirigido a la sala de espera, entonces el objetivo punto obtener.
Componente.
Agente G.
Inventario de puntos añadir elemento.
Recurso.
Así que estamos añadiendo el cubículo al agente, el inventario del paciente, para que la enfermera encuentre el cubículo.
Y entonces si encuentra si la enfermera encuentra al paciente, entonces la enfermera le da acceso al cubículo.
Así que ahora ambos tienen el mismo cubículo en su inventario, lo que significa que ahora podemos seguir
adelante y crear las acciones donde ambos de nuestros agentes se dirigen a ese cubículo y volveremos a hacer eso en el
próximo video.