En la última conferencia, ideamos un plan para hacer pan y también recoger la harina para hacer
ese pan.
Ahora queremos agregar otro plan donde entregamos el pan. La entrega del pan es
diferente
a la otra cadena. Realmente no encaja porque queremos entregar pan, pero solo cuando tenemos una cierta
cantidad de pan.
BakeBread produce solo 1 barra de pan, pero queremos acumularlos en una entrega.
Comenzaremos con el proyecto anterior donde el panadero estaba horneando pan y recogiendo harina
según fuera necesario y, para comenzar, vamos a insertar una nueva acción para entregar el pan de modo que obtengamos
una cadena que se vea como esta... que tenemos harina de recogida ... Hornee pan y luego entregue pan.
Tenga en cuenta que el efecto 'doJob' se mueve al final de la entrega de pan y se utiliza
un 'hasBread' True para vincular la cocción y la entrega.
Entonces, para lograr esto, necesitas un nuevo
script de acción, así que crea otro script C # y llámalo DeliverBread y se verá así.
Entonces, DeliverBread es una acción de DeliverBread.
Recuerde que puede copiar esto de sus otras acciones para evitar que vuelva a escribirlo
todo y simplemente modifique DeliverBread allí y luego también en el constructor.
Ahora, la condición previa para entregar pan es que tienes pan y el efecto es hacer el trabajo.
Entonces, para que el panadero haga su trabajo por completo, tiene
que entregar el pan, no solo hacerlo.
Ahora, cuando entregamos pan (si volvemos a nuestro rendimiento), eso significará que el nivel
de pan en el inventario bajará en 1.
Así que asegúrese de agregar ese efecto de entorno físico en su script aquí.
Guarde eso,
luego vuelva a su acción BakeBread, tendrá que cambiar su Efecto final aquí para ...
en lugar de hacer el trabajo ('doJob'), será 'hasBread' es True y luego vinculará esa acción con la
acción DeliverBread.
Así que asegúrese de guardar eso también.
Ahora regrese a Unity, seleccione el Baker y desea arrastrar y soltar el script DeliverBread en el Baker
y luego establecer la ubicación de entrega, que será la Puerta del Mercado.
Así que vamos a arrastrar y soltar eso allí.
Ahora, cuando presionamos
Reproducir, inicialmente no tendremos pan en nuestro inventario, por lo que no
podemos entregar nada, pero él hará pan (y usted tiene
pan es 1) y luego irá a entregarlo y lo dejará y luego regresará y ya
tiene suficiente harina para poder hacer otra barra de pan y luego ir y dejar
eso y ahora no tiene suficiente harina, así que tendrá que ir al molino para tomar algo harina y luego
regresará a la panadería y horneará un poco más de pan ... pero solo hornea 1 barra de pan
porque eso establece 'hasBread' en True, lo que va a causar ese enlace.
Ahora, la razón por la que no podemos probar cuántos pedazos de pan tenemos para hacer
esto es porque cada acción tiene que tener las Condiciones previas y los Efectos que se unen, de modo que cuando se
ejecuta el algoritmo A * a través del plan y tratando de encontrar todas las
acciones que se
unirán, si no tiene una coincidencia, entonces no funcionará.
Por lo tanto, no puede hacer que la panadería diga 'hasBread' es Falso y luego que el mercado diga 'hasBread'
es Verdadero y espere que la cadena se forme en la etapa de planificación, lo que significa que nunca tendrá un
plan que solo comience con pan horneado y luego se romperá y se caerá y
puede intentarlo si lo desea, simplemente no funcionará.
Entonces, en lugar de hacer eso, desea agregar un plan separado. Así que volveremos a nuestro DeliverBread y, en la
parte superior, configuraremos esto de nuevo en 'hasDelivery'. Por lo tanto, una entrega será algo más grande y
va a satisfacer al 'doJob'.
Ahora, cuando se ha producido una entrega, digamos que hay 5 barras de pan en una
entrega, así que en la parte inferior aquí, nuestro nivel de inventario bajará en 5.
Eso está muy bien.
Así que guarde eso, volvamos a BakeBread. Ahora BakeBread va a volver a ser lo que era antes, así
que vamos a 'doJob' y continuaremos haciendo el trabajo. Guarde eso y luego quiere
pasar a Trabajador
y necesitamos inyectar las 5 barras de pan como Estado Mundial, lo que luego desencadenará la entrega.
Así que vamos a ponerlo aquí en GetWorldState con la harina, así que
aquí solo agregaremos ...
worldData.
Agregue 'hasDelivery' y será igual al nivel de pan del inventario mayor que 4, lo que significa que
tenemos 5 (o más)
barras de pan que podemos entregar y luego cuando
eso llegue a eso y 'hasDelivery' es True, entonces una entrega puede ocurrir.
Así que guardaremos eso y volveremos a Unity y presionaremos Play. Entonces, inicialmente no tenemos pan, así que vamos
a comenzar a hacer pan ... tengo 2 panes ... ve y consigue un poco más de harina y obtén suficiente
harina para poder hacer 3 panes más ... esos 3 panes se harán en ese punto (¡esperamos! ) deberíamos poder entregar porque tendremos
5 lotes de pan y allí va y luego,
cuando llega allí y esa acción se completa, reducirá el pan en el inventario
a 0.
Tampoco hay
harina y tenemos que volver al molino para recogerla.
Así que ahora tenemos una serie compleja de eventos con solo algunas cadenas de acciones realmente simples en
ellas y puede ver a partir de esto lo fácil que es seguir agregando acciones
para realizar todo tipo de tareas diferentes. En la próxima conferencia, veremos cómo agregar un inventario global y otro agente.