Até agora, temos um agente que pode montar uma seqüência de ações para satisfazer um único objetivo, e podemos dizer o
que está acontecendo com esses objetivos.
Se olharmos no console no momento, o que nos dá um pouco de idéia dos planos para
o agente.
Além disso, criei um anexo como um recurso para este vídeo Agent Visualizer.
Portanto, se você baixar isso.
Zip, descompacte-o e depois simplesmente arraste e solte essa pasta em seus ativos.
Espere um pouco.
Antes de mais nada, devemos parar de pausar e brincar de arrastar e largar isso dentro.
Portanto, é o visualizador do agente aqui.
Agora, o Agent Visualizer tem dois scripts, que é o agente visual que você pode
anexar a qualquer um de seus agentes.
E depois há um editor de agentes G que precisa ir para uma pasta que se chama editor.
Então volte a seus ativos e apenas crie uma nova pasta, chame aquele editor e depois abra-a e pegue aquele
editor de agentes G e arraste e solte-a no editor.
Parece que eu já tinha um editor lá dentro.
Então, agora está vazio.
Vou apenas apagar isso.
Certo.
Então agora que temos isso, você pode agarrar seu agente G visual e se clicar em seu paciente
arrastar e soltar isso no inspetor.
E depois vamos nos certificar de colocar estas mudanças de volta em nossa casa pré-fabricada.
Portanto, vá até o topo do inspetor e onde você tem as anulações, basta clicar sobre isso e há um botão aplicar
tudo ao seu lado e isso vai garantir que todos os pacientes que são desovados de seus pré-fabricados
tenham as mesmas coisas neles.
Agora este visual de agente G usa realmente o código do editor inspetor, que eu não vou passar neste
curso.
Mas se você estiver interessado, acho que você pode ter uma escavação no código.
Agora, se pressionarmos o play, você verá isso e então fará uma pausa para que este visual do agente mostre realmente
qual é a ação atual, quais são os objetivos que o agente está tentando satisfazer, e as ações que ele tem
agora.
Atualmente não está imprimindo o plano, mas não há razão para que você não possa fazer isso.
E se você der uma olhada no roteiro, então ele lhe dará uma idéia bastante decente de como você obtém os dados
de seu agente e realmente os coloca nesta pequena área.
Mas eu apenas criei isto para me ajudar a ter certeza de que posso ver tudo e que também podemos ver muito rapidamente
as condições prévias e os efeitos e para ter certeza de que as coisas estão soletradas corretamente e que as coisas vão
ficar todas alinhadas quando começarmos a pressionar o jogo.
Agora é a hora de programar a enfermeira e é aqui que as coisas começam a ficar interessantes.
A enfermeira não pode entrar em ação para conseguir um paciente até que haja um paciente esperando.
Portanto, antes de tudo, vamos criar nosso roteiro de enfermeira, assim como temos nosso roteiro paciente, e depois vamos trabalhar
nele a partir daí.
Então vamos apenas pegar o roteiro do paciente e controlar D para fazer uma cópia do mesmo.
Em seguida, vamos chamá-lo de enfermeiro e abri-lo.
Mude de paciente para enfermeira.
Assim, a enfermeira vai dirigir o início da base, assim como o paciente.
Mas o objetivo, neste caso, não será esperar, mas tratar o paciente.
E então adicionamos o objetivo.
Portanto, deixaremos apenas um objetivo lá dentro no momento.
Portanto, economize isso.
Vamos voltar à unidade e vamos anexar isso à nossa enfermeira solo que temos atualmente.
Então, pegue isso e coloque na enfermeira.
Agora a ação da enfermeira para ter paciência será a primeira que escrevemos.
Então vamos agarrar um dos pacientes, como ir ao hospital e copiá-lo.
Controle.
DX E eu vou chamá-lo Get Patient.
Em seguida, abra isso e renomeie a classe.
Para conseguir.
Paciente.
E então a salvaremos.
Voltar à Unidade e anexar isso à nossa enfermeira.
Portanto, ter paciência é só isso.
Agora, o nome da ação será paciente, para que possamos nomear aquele que lá for paciente.
E nossos efeitos posteriores, por enquanto, serão.
O objetivo que acabamos de acrescentar.
Portanto, vamos acrescentar um e vamos chamá-lo de Treat.
O paciente vai ser nosso efeito posterior.
Muito bem, agora precisamos de uma condição prévia.
Então, qual é a condição prévia que vamos estabelecer?
Bem.
A enfermeira não fez nada para acionar isto.
Na verdade, precisamos que o mundo o acione ou precisamos de algo que mude no mundo que vai acioná-lo.
Portanto, nestas condições prévias, o que vou fazer aqui é apenas acrescentar uma, e
a condição prévia neste caso vai ser esperar ou esperar paciente.
Portanto, temos esta espera.
De onde vai vir a espera?
Então, quem é o objetivo ou quem afirma que vai ser esse?
Vai ser o estado do mundo e tem que ser acionado pelo paciente quando ele começar a
esperar.
Portanto, o que precisamos fazer é entrar no código de espera de nossos pacientes e no posto executar.
O que vamos fazer aqui é acrescentar em um estado mundial.
Então, g mundo.
Exemplo de ponto, ponto get world.
Ponto modificado.
Estado à espera.
Um.
Portanto, vai acrescentar um paciente que estará esperando.
Assim, agora que o paciente vai injetar este estado de espera no mundo, vamos voltar e começar
a monitorá-lo.
E é aí que entra em jogo este item de tela que foi desativado aqui sentado causando-lhe alguns avisos ao longo
do tempo.
Portanto, basta ligar essa tela novamente.
Você verá que há uma caixa de texto chamada Status Mundial.
E isto é apenas para mostrar o que os estados do mundo são e apenas para que você veja.
E quando você não estiver mais usando-o, você pode simplesmente desligá-lo.
Mas precisamos atualizar os estados do mundo para o que está no Dicionário de Estados do Mundo.
E isso significa escrever este roteiro que está faltando na parte inferior.
Portanto, vamos lá e clique aqui com o botão direito e criaremos um novo script chamado Update World.
Eu abro isso e vai ser muito curto.
A primeira coisa que ele vai fazer é receber o texto.
Assim diz o texto público.
E então na atualização tardia, faremos isso porque não queremos fazer isso com muita freqüência.
Livre-se do início.
E depois queremos um dicionário que é, naturalmente, nosso conjunto de palavras e estados do mundo.
Igual a G world dot instance, dot get world dot get states.
Agora você poderia usar isso diretamente na próxima declaração que vamos criar, mas eu só fiz
isso lá para tornar o código um pouco mais curto e depois colocaremos apenas o texto de pontos
de estado.
É igual a vazio.
Basta se livrar desse texto.
E depois, aqui em baixo, queremos para cada par de valores chave, que será um fio e um int s nos estados do
mundo.
E então colocaremos apenas o texto de ponto mais estados é igual a s chave.
Portanto, esse é nosso fio mais um espaço em vírgula mais um valor no caso de você estar realmente usando esse valor.
E como estamos modificando-o, ele será atualizado à medida que adicionarmos pacientes.
Por isso, vai esperar uma espera até a outra e dizer a você quantos estão esperando e quantos
estão esperando.
E colocar agora uma nova linha para acessar este texto que parece não gostar.
Não se esqueça que, logo no topo, vamos precisar usar a unidade motor ponto UI a fim de pegar esse texto e esses
erros devem então desaparecer.
Se redefinirmos isso como um texto.
Ok, ótimo.
Portanto, economize isso.
Vamos voltar à unidade.
E o que vamos fazer é clicar sobre nossos estados mundiais, objeto na hierarquia e simplesmente colocar
aquele roteiro que faltava de volta onde estava.
E o componente de texto, que está aqui em cima, você pode simplesmente arrastar e soltar isso para dentro do caso dos estados.
Portanto, é este que está no mesmo objeto em estados.
E agora, quando a executarmos, vamos ver que quando nosso paciente entrar e for para a sala de espera, então
ficaremos esperando, aparecendo aqui em cima com um número.
Portanto, vamos esperar até que um desses caras entre ali.
Certo.
Aqui vamos nós.
Ele está lá dentro e está agora.
Esperar e esperar é um, dois.
E como eles se amontoam e se lembram, eles realmente têm que acertar o ponto certo para serem classificados
como espera.
Mas, eventualmente, ela está crescendo.
Portanto, agora é este estado particular aqui que queremos afetar a enfermeira e injetar de volta nas enfermeiras,
obter ação paciente.
Agora, isso, de fato, está acontecendo.
Mas por que a enfermeira está se mudando?
Bem, ainda não estabelecemos a meta dos enfermeiros.
O alvo precisa ser o paciente que a enfermeira precisa buscar.
Mas só para testar se a enfermeira está realmente dirigindo isto, é preciso ter paciência.
Vamos apenas por agora dar o alvo à enfermeira daquela área de espera para que ela se dirija para lá.
Mas não é o caminho certo porque queremos que ela encontre seu verdadeiro paciente.
Então vamos apenas testar isto novamente e vamos pressionar o jogo agora enquanto esperamos que estes caras entrem.
Espero não estar sendo muito preconceituosa ou sexista ou o que quer que você chame de preconceituosa, chamando a enfermeira
de "ela" e o paciente de "ele", mas para mim eles me parecem assim, então eu vou apenas com isso.
Muito bem, então aqui vamos nós.
Aí vem nosso paciente.
Ele está lá dentro, deve acionar a enfermeira.
E lá vai a enfermeira em ação, correndo para que essa particular seja paciente.
Agora, ela não vai fazer mais nada porque é só isso.
Essa era a única coisa que ela sabia fazer.
Mas ela só vai para aquela área de espera, não vai receber o paciente.
E assim, acrescentaremos essa funcionalidade quando voltarmos na próxima palestra.