Transcrições
1. Visão geral do curso: neste treinamento, vamos tocar em padrões de design e especialmente o padrão de controle de visualização modelo, que é amplamente utilizado em homens da lei Aptiva e pode ser muito útil no desenvolvimento de jogos para nós
vamos começar a marcar o U. Y usando as ferramentas de unidade y. Então vamos tocar em objeto inescrutável, o que nos permite a segurança de dados indie editor e usá-lo sempre. E então nós vamos tocar no controle do jogo para pegar as entradas do jogador e enviar feedback para o jogador para deixá-lo saber se Blade certo ou errado para isso, vamos usar um toque de vingança ou herói de guitarra tipo de jogo. Então, com essa oportunidade Aito e eu vou te ver no próximo vídeo
2. Uma visão de padrões de design: Durante este primeiro capítulo, vamos tocar no controlador de visão modelo, que vai ser a base para os próximos capítulos deste projeto de jogo, que vai ser uma espécie de herói de guitarra ou toque de vingança tipo de jogo onde o jogador tem que tocar diferentes entradas e ritmo com a música. E então o que Ah, podemos ver aqui é que a jogabilidade é uma jogabilidade muito centrada em dados. Então isso significa que vamos ter que lidar com dados para as faixas. E então nós vamos ter que Ah, Thor, os dados. E então nós também vamos ter Teoh para usar esses dados e neste capítulo, trabalhando para tocar em lidar com os dados, criando alguns dados básicos. E o que vemos aqui é que Ah, temos uma série de entradas esperadas são exibidas é Colin E então vamos torná-lo muito simples por enquanto, onde temos apenas uma entrada por ele um em. Mas tal é para cima, para baixo, para esquerda, direita Então as meninas deslocadas para baixo com uma batida definida por minuto perímetro no jogador, Miss pressionou os botões e riven com a música e as representações de entrada vão mudar para refletir a ação dos jogadores Tal como Será que eu perdi? Eu acertei? Eu entendi errado? O jogador tem que saber se ele é jogado direito, e se ele é jogado, provavelmente ele tem que obter algumas recompensas. Se você substituir provavelmente. Então vamos ter uma boa visão geral do que vamos tocar no capítulo. Nós vamos ter uma rápida de uma visão dos padrões conhecidos, que são a inveja vê, que é o controlador de visualização modelo ou o M V M para modelo View View e o M V P para Model View apresentador, que são projetados padrões. Então vamos ver como enfraquecer rapidamente zombar da visão em unidade, usando a ferramenta U Y para que possamos dar a nós mesmos uma boa idéia muito boa representações de como a visão vai ser, e então como os dados vão ser como com ele. Então vamos tocar no modelo da pista. Então é que vamos tocar na estrutura de dados. Nós vamos fazer isso de modo que os dados são independentes da jogabilidade vamos tocar em dados reutilizáveis e tocar em civilização que vamos tocar também na geração dados
simples, Randomly disse que não temos que criar nosso próprios dados no início do desenvolvimento. Em foram para tocar na exibição de dados na edição também. E então vamos tocar na visão da pista, que representa a faixa na visualização do jogo, usando alguns modelos disciplinares que vamos fazer referência. E então vamos preencher a vista com esses sujeitos pré-fabricados. E depois vamos animar a vista. E mais tarde vamos tocar no controlador de jogo,
tomando as entradas do jogador que lida com todas as mecânicas de jogo estavam indo para tocar no padrão singleton, que perde para acessar um controlador ou excesso de um componente de jogo onde quer que esteja na cena sem ter que referenciá-lo manualmente. E então nós vamos tocar nas vistas da praia é o que queremos fazer é atualizar as vistas
quando o jogador joga, disse que o jogador sabe se ele é jogado direito ao redor. Então vamos começar com uma visão geral rápida do controlador de visualização do modelo. O controlador de visão modelo diz-nos que separamos em oposição a uma arquitetura competente , um comum. É auto-suficiente, por isso a confiança vai funcionar uns com os outros. Mas há auto-suficiente. Muitas vezes, um competente tem seus próprios dados. Ele tem hits na representação dos dados, e ele lida com as entradas do jogador em uma banda innately por isso é velho, auto-suficiente em um design. Melhor, tendemos a separar as coisas para que elas sejam mais modulares, de modo a enfraquecer as coisas de mudança. A idéia de um controlador de visualização modelo é que você pode trocar um vory controlador rapidamente e muito facilmente sem ter que mudar outro componente fora do ecossistema. Neste padrão, o que vemos é que temos um modelo, que é os dados em si, e do outro lado há o usuário, e no meio há um controlador e uma visão. A vista é vai levar. O modelo levará os dados do modelo e apresentará os dados ao usuário em um determinado formulário. E então o controlador, por outro lado, tomará a entrada do usuário e modificará os dados. E assim, sempre que os dados mudam, então a visualização de datas e assim por diante e assim por diante. Este é o controlador de visualização do modelo. Este é um padrão de design que é amplamente utilizado no desenvolvimento APS. Agora há alguns outros padrões que são muito semelhantes a esse padrão de controlador de visualização de modelo e tal é o modelo de visualização de modelo onde o que você pode ver aqui é que há uma camada
diferente de abstração entre o modelo e a vista onde você tem um modelo de visualização, o que é ok. Conhecemos esses dados e conhecemos a vista. Mas o que queremos fazer aqui é ter certeza de que você pode ter uma visão que de alguma forma é capaz se
adaptar a um modelo. Então você poderia ter, como uma visão muito generosa, e assim de você poderia potencialmente exibir diferentes tipos de dados. E esta é a idéia fora do modelo de exibição de modelo, que também é usado no desenvolvimento de jogos. Às vezes, outro padrão de design, que é novamente muito semelhante a este, é o apresentador da vista do meio, o apresentador da visualização do modelo, oposição ao controlador de visualização do modelo original. Você pode ver que o apresentador está entre o final do modelo de você, então não é a visão que realmente data no modelo,
mas a visão atualiza com base no apresentador, o prisioneiro é o gerente é o gerente global, e ele lida com os dados e dá a exibição. Ele dá-lhe os dados a serem exibidos, ea vista irá então exibir os dados, e ele vai tomar as entradas do usuário. Dito isto, estes são apenas padrões projetados. Eles não são apenas como algo que você tem que seguir com muita precisão. É algo que você pode brincar e mudar é que você precisa, embora geralmente seja bom conhecer esses padrões de design,
provavelmente, provavelmente, e entendê-los para que sempre que você quiser criar seus próprios veteranos de design, então você não acaba recriando de alguma forma um padrão que já é uma queda nas armadilhas de padrões de design desconhecidos. Então, com todo esse combustível retransmitido, é hora de praticar. E isso é o que vamos fazer no próximo vídeo
3. Mocking na visão de trilha: Então, como vamos começar a trabalhar neste padrão de controlador de visualização modelo, vamos ter que ah, trabalhar em todos os três componentes ao mesmo tempo. Mas temos que começar com um deles. E sempre haverá pessoas que, como Teoh, começam pelo fim. E, uh, normalmente, eu meio que gosto do Teoh. Comece com a vista, que é mais sobre o que a vista vai ser parecida, uh, no final e o que é e veio a funcionar e como está indo. Teoh, comporte-se. Então eu gosto de sujar a outra vista primeiro. Ali. Só estou falando de Ah, novo, você
está? Trudy,
projete com unidade e acabei de adicionar
umatela
simples aqui. Trudy, projete com unidade e acabei de adicionar uma Ah, uma
espécie de estúdio. Então o que vamos fazer aqui é começar Mokin acima da vista e então vamos começar a trabalhar no modelo, uh, logo depois. Então o que eu vou fazer aqui é entrar no painel de criação e eu vou entrar no que você quer e pedir para criar uma nova tela. Estou criando duas
telas porque a tela que eu já tenho é uma tela para D e é uma tela paga sobreposição e a que eu quero Teoh Handle agora vai ser uma tela três d Então e eu estou realmente indo para renomeá-lo Canvas três D assim e agora o que Eu quero fazer aqui é e dizer que eu quero levá-lo de sobreposição espaço da tela para câmera espaço de tela para que eu possa lidar com três projeção D. E lá eu vou apenas usar a câmera principal aqui, e eu vou manter as extremidades descartadas simples e todas as outras configurações para seus padrões. Na verdade, eu só vou dizer que eu quero dimensionar com o tamanho da tela e eu vou
dar uma resolução de referência off 10 80 por 7 20 para salvar 20 p resolução. E eu também vou dizer que quer dedo do pé coincidir com a altura aqui e que eu quero dar uma referência pixels por unidade off 128 pixels como este. Agora que eu tenho isso, eu vou importar um par de sprites, e então eu estou indo para ir importante o costume que você precisa de um pacote que você vai encontrar junto com este treinamento e lá isso vai me dar as entradas set off e também uma zona de
gatilho que vamos configurar e montar. Então lá vamos nós. Temos esses sprays aqui, a vida abaixo de uma rosa e também uma zona de gatilho, que é apenas um quadrado simples. Mas tem configurações aqui, como podemos ver neste predador, de modo que temos uma margem e uma borda para que possamos criar um quadrado holográfico a partir daí. O que eu quero fazer Aqui é então começar a gozar de um show que eu vou. Teoh disse que, uh, eu vou redefinir o zoom para esta nova cura de tela e o que eu quero por agora, eu só vou,
uh, uh, obter a mesma visão vai ser maior e a partir daí, o que eu sou indo Teoh criar é o que vai ser nossa visão de atração, que eu vou fazer uma simulação de uma visão de pista. E então para isso eu vou entrar aqui e simplesmente disse que eu quero criar um painel e eu vou me livrar do fundo, tipo de ver imagens como esta, e eu vou apenas fazer. Eu dou como um fundo padrão. Vou fazer um bolo completo e dar como, uh, um fundo cinza como este para que possamos vê-lo. E agora vou definir o seu “Ah Lineman”. Então primeiro eu vou Teoh renomear isso para rastrear como você gosta disso e eu vou mudar
isso para que ele é ah alinhado na parte inferior como este e eu vou dar-lhe um com off 3 20 como este. Então esta vai ser a representação fora da pista. E agora que eu tenho isso, eu vou Teoh começar a adicionar alguns sub você elementos como vimos que queremos ter cada batida representado como um saque elementos. Então, o que eu posso fazer na verdade é simplesmente duplicar este elemento aqui, e então eu vou chamá-lo de vista batida assim, e eu vou pará-lo para a unidade que você gosta disso e eu vou redefinir sua posição e redefinir sua escala assim pessoa raciocinada, a habilidade é Teoh mudou e eu vou mudar sua altura. Então eu vou dar uma altura de 40 e tudo isso vai ser personalizável mais tarde. Mas, por enquanto, vou ficar aqui sentado. E então o que eu tenho aqui é ah é uma subvista aqui. E o que eu vou Teoh fazer aqui é adicionar na visão de faixa, eu vou adicionar outro componente, que é um grupo de layout vertical. E então o quê? O Dodge é que ele irá automaticamente colocar para fora todas as crianças deste objeto. Então agora eu vou pegar este 100 aqui, e eu vou dar,
tipo, tipo, uma cor diferente que eu vou torná-lo azul. E agora o que podemos ver aqui é que se eu não aplacar este objeto algumas vezes, então ele irá automaticamente colocar esses objetos lá dentro. Agora podemos ver que este compartimento distribuirá automaticamente este objeto ao longo de sua altura. Então eu também vou adicionar outro componente aqui, que é um tamanho constante, tamanho comum, medo e o futuro dos condensados. Ou me perder para dizer que eu quero ajustar o tamanho deste objeto com base no conteúdo deste objeto. Então, baseado nos Filhos do assunto e ali, eu vou dizer isso verticalmente. Eu queria ter o tamanho mínimo. E então o que você pode ver aqui é que agora todos os objetos serão retomados juntos como este objeto agora é a altura de todos os objetos juntos. E ainda tenho acesso ao espaçamento aqui. Então, se eu quisesse espaçá-los, como com 20 pixels cada um como este, então eu poderia fazê-lo assim. Então este é o Ah, este é um muito, uh, Foley Andy para fazer isso e isso me perder também. Então, basta pegar essa trilha aqui e então eu vou simplesmente ter essa trilha passear para baixo enquanto nós passamos pelo jogo. Então o que vamos fazer é que no início do jogo, vamos inicializar a visão com todas as informações que obtemos da pista, e vamos preencher isso com todas as informações diferentes. É ah,
para cima, para baixo, para esquerda, direita. E então nós vamos simplesmente fazê-lo mover-se para baixo assim. Não, o quê? Eu também estou indo Teoh para fazer aqui e disse que eu quero que isso para controlar o ah, os laços da China e eu queria controlar a largura, mas eu não quero que ele para controlar a altura. Eu só queria controlar o com. E então o que nós também vamos fazer aqui e agora como então dizer que queremos mudar as
visões de um pouco para que tenhamos representação fora da esquerda,
direita, direita, para
cima para baixo entradas. E então, para fazer isso, eu simplesmente vou,
uh,
adicionar uh, ou na verdade, eu poderia apenas duplicar isso e então eu corri. E então eu vou definir isso para tomar totalmente, ah, toda a sua transformação pai assim. E agora vou substituir a imagem de origem. Eu também vou redefinir a escala assim e lá eu vou mudar isso para usar o,
hum, hum, Earl
esquerdo. E eu também vou dizer que eu queria preservar, uh, a expectativa e eu também queria ser branco. Caso contrário, é azul contra azul, e não é muito capaz, então eu tenho isso. Agora, isto vai ser a minha coisa para baixo vai ser a minha visão de entrada esquerda. E então eu vou renomear isso para a esquerda, e eu vou renomear isso para deixar uma sala como esta e eu vou me livrar de tudo isso . E agora que eu tenho isso, eu vou duplicar isso algumas vezes, e tudo que eu tenho que fazer agora é ah e dizer, pegue este e eu vou dizer certo,
uh,
e para uh, baixo. E assim, como você poderia esperar, eu vou levar isso para o grande Perot e escrever e para baixo eu realmente gosto disso. E eu vou substituir a imagem de origem para usar o Sprite para baixo, pulverizado e para cima como este e direito assim. Agora tenho todos esses objetos que poderei usar mais tarde. E eu vou simplesmente mudar, posso perceber que tem que redefinir a escala novamente para todos os outros objetos. Então você pode querer Teoh certifique-se de que você não somar com esses valores como este. E agora eu vou dizer que eu não vou ter cores diferentes para o ano. A taxa esquerda para cima e para baixo. Então, basicamente, vou pegar faculdades arbitrárias que combinam com as cores do
controle PlayStation 4 . Então eu vou definir que a esquerda vai ser de alguma forma rosa e o baixo é azul. A direita é vermelha assim, e a subida vai ser verde assim. Mas você pode realmente escolher qualquer cor que você quiser. Em outro vídeo, veremos como podemos aproveitar as entradas multiplataforma e ter diferentes conjuntos de sprites para PlayStation, Xbox e PC e outras versões. Então isso é, Ah, praticamente tudo o que eu queria. Mas eu também quero ser capaz de inclinar a tela para que tenhamos alguma perspectiva é que
poderíamos ver na simulação original Up. Nós não queremos que este seja um jogo muito dois d muito para D. Queríamos ser mais uma espécie de jogo de três D. E assim para fazer isso, eu estou realmente indo para Nós vamos entrar novamente aqui, e eu vou adicionar um novo painel como este para a visão de faixa, e eu vou chamá-lo de Tilt View. E então a visão do negócio vai continuar a ser uma raiz da tela três como esta, e eu simplesmente vou aparentar a visão da pista para a inclinação de você assim. E ali, com a vista de caixa. O que eu vou fazer aqui é e dizer que eu quero um pouco de um novo deslocamento do fundo, como 100 pixels e talvez a mesma coisa no topo, como 50 pixels também. E não, o quê? Eu quero ter certeza de que eu vou colocar o pivô nas baías de Vory e então eu
vou simplesmente dizer o outro pivô para, ah zero como este, e eu provavelmente vou ter que redefinir isso agora, também. 50 e 100 assim. E o que isso me permite fazer então, é girar a tela aqui assim e inclinar a vista. Então eu vou usar um valor arbitrário de 60. E então o que sempre fez isso agora não é mudar a posição da visão de pista. E como você pode ver, então a viagem vai se mover em um espaço de três D sobre isso é isso que eu queria. E mais uma vez, eu posso você sabe, ele apenas duplica isso algumas vezes, e eu vou ter, uh, o efeito que eu queria que Teoh tivesse pouco interesse e fizesse isso e aquilo. Dizendo que no dia seguinte tem acordo. Nós vamos estar, ah, preparando o pré fabs que podemos usar em vez dela oito letras e nós também vamos
começar a trabalhar no roteiro modelo.
4. Como gravar elementos de interface como Prefabs: Ok, então agora que nós temos o nosso um moke fora da tribo, você o que nós também queremos que Teoh para fazer é adicionar a zona de gatilho, que vai dizer ao jogador onde dois e quando realmente para acionar, uh, o entradas. E para fazer isso, eu simplesmente vou pegar o objeto esquerdo aqui, e eu vou duplicá-lo e eu vou reparar e para o para o resfriado Você como este e apenas vai redefinir. É, ah posição como esta 200 E eu também vou redefinir a escala 111 e assim. E agora eu vou mudar isso para estar na raiz assim e principalmente indo para alinhar a posição e as pessoas assim. E assim com isso, eu vou renomear isso para acionar zona assim, e eu vou ser lido fora do objeto filho aqui e ali. Eu vou mudar isso de volta para branco, e eu também vou mudar isso para usar a zona de gatilho Sprite. E lá você pode ver que no site de imagem temos esta bela disse Teoh fatiado, e eu estou simplesmente indo para desmarcar sentir centro e pela ONU verificando centro de campo teria morre que se tivéssemos olhado para a propagação aqui, Este direito tem algumas fronteiras e vai simplesmente torná-lo totalmente transparente dentro das fronteiras. Então, com isso, isso vai me deixar mirar esta zona aqui e como mais tarde queremos ser capazes preencher, atrair vista com objetos, obviamente não queremos ter esse objeto ou realmente na visão de pista. E então eles estão todos prontos aqui. O que eu também vou fazer aqui é então simplesmente selecionar todos esses objetos lá dentro. Vou desmarcar o alvo reformulado porque isto não é intratável. Então eu não preciso ah,
ter a outra opção de alvo de café da manhã lá. O que eu vou Teoh fazer. Aqui está e simplesmente entrando aqui e criando uma nova pasta que eu vou chamar pré fabs como este. E eu vou entrar aqui e arrastar e soltar o último e para a direita e para baixo pré fabs como este. E então eu vou dar a eles na vista agora, apenas você mantenha um companheiro ideal onde eu estou indo e o que eu quero fazer. Mas mais tarde vamos apenas nos livrar deles e re preencher a vista com os dados que vêm da pista. E assim, no próximo vídeo, vamos começar a trabalhar no modelo de pista. Então, em todos os dados que queremos colocar em uma faixa de música
5. Moldagem de dados (modelo): Ok, então neste vídeo, nós vamos estar trabalhando no padrão de pista ou o modelo de faixa fora do deste controlador de
visualização modelo Melhor. E assim para fazer isso e simplesmente indo para criar uma nova pasta que em Canticle scripts como este. E nesta pasta eu estou indo para ir e criar um novo script C afiado e eu vou ir para pista como este, e eu vou começar a editar a faixa assim. E então o que eu vou começar com, eu estou realmente indo apenas para me livrar de tudo isso, e eu vou, hum tudo no espaço do nome uma espécie de como fazer isso. Faz com que seja sua carta para, ah, lidar com o projeto. E assim com isso aqui, eu vou apenas manter a pista para ser um comportamento imoral por enquanto. E podemos pensar nisso como sendo um jogador de atletismo de alguma forma. E eu vou pensar em como são os dados? Então, o modelo no controlador de visualização modelo é muito importante porque são os dados que
usamos para exibir a exibição. Mas também são os dados que usamos no controlado ou dois controlado o jogo. E por isso é muito que é a raiz de um controlador de vista modelo. E então o quê? Eu vou Teoh começar a perguntar. Aqui está o que é uma faixa? O que toda a informação é que queremos ter em uma pista. Então, obviamente, poderíamos começar a pensar o suficiente. Ah, bem, ele tem um título e tem um nome de autor e tem uma descrição. Tem um álbum, nome e assim por diante. E então isso é tudo bonito de vocês, e eu não vou colocá-los aqui. Mas provavelmente vamos fazer isso em um capítulo posterior, ou para começar a exibir coleções de faixas e deixar o jogador para trégua entre várias faixas. Mas eles são o que eu realmente quero que Teoh se concentre é, o que essa faixa vai fazer no meu controlador? Vai dizer a minha visão de pista. Quais são as informações a serem exibidas? E ele vai dizer ao meu e veio controlador como usar essa informação, e então basicamente ele vai ser uma lista fora de informação porque ele vai simplesmente estar
na informação que diz é cada batida que queremos tomar uma entrada e queremos exibir um entrada e queremos tomar uma entrada e certificar-se de que o jogador é jogado. Isso introduz. Então eu vou apenas representá-lo como uma lista de inteiros. Eu poderia criar alguns dados mais inteligentes sobre o que é a batida. Talvez tenha uma entrada no tempo e assim por diante, mas isso é algo em que vamos entrar. Ah, mais tarde, eu acho. Mas, por enquanto, eu só vou Teoh, torná-lo muito simples. Vai ser uma lista de inteiros e ainda, se for zero, então ele vai ser deixado. Significa que esperamos a entrada esquerda. Se é um, então é provavelmente,
Ah, Ah, para baixo. E se for também, é para cima. E se forem três, está certo. E eu também vou usar um padrão, um valor de menos um para representar uma batida vazia. Eso é uma batida que não queremos jogar. E então para isso eu vou apenas dizer que eu quero criar isso uma lista pública de inteiros que eu estou chamando de batidas e é isso. E assim sempre que eu voltar aqui, agora vou criar um novo jogo contra aqui para que possamos dar uma olhada nisso. Ter os dados são representados. E eu vou chamar esta faixa de um jogador como este, e eu vou adicionar uma faixa componente. E o que podemos ver aqui é que isso já é ah, Sarah realizável. Então eu posso apenas dizer que eu quero ter três, e então o um não é para ser jogado. E o segundo é jogar o ano a entrada esquerda e o próximo é jogar a
entrada para baixo , por exemplo. E esta é a estrutura de dados. Isto é o que queremos que Teoh manipule como uma estrutura de dados. E também há uma informação muito importante. Quanto ao controlador de jogo é as batidas por minutos, porque ele vai dizer a jogabilidade . Qual é o bit por minuto? Qual é a velocidade desta pista? E esta é outra informação que eu quero adicionar aqui, e eu vou colocá-lo acima eso que nós, se nós temos como uma trilha muito longa, nós não queremos que nós dedos encontrar esta informação todo o caminho até o fundo. Então eu vou dizer imagem pública ou B p m é igual e eu vou dar-lhe um valor diferente de 120 como este. E assim sempre que eu voltar aqui, então eu recebo a informação do BPM aqui. Então é isso. E o que vemos aqui é que neste componente ah track aqui nós temos todos os dados e nós poderíamos começar a adicionar todo o fazer X. Se você estivesse em uma arquitetura baseada em componentes, nós começaríamos a adicionar uma mecânica lthough que exibirá a visão de faixa e, em seguida, também adicionaria a mecânica de jogo. Mas porque queremos separar os dados da visão e do controlador, um dos problemas que temos aqui é que sabemos que queremos ter um objeto de jogo para cada faixa. Ah, que queremos ser capazes de jogar. E então não queremos que este script aqui faça referência a um comportamento de modelo, e isso é o que faremos no próximo vídeo. Vamos mudar esta faixa para um modelo de dados em vez de ser um comportamento motor
6. Como separar os dados do componente: Ok, então neste vídeo, vamos agora transformar este modelo de dados ah em um modelo de dados real e totalmente abandonado do modo de comportamento que lidou com ele. Então o que eu vou fazer aqui é então dizer que eu quero criar uma nova classe de objetos. Eu vou fazer uma nova aula pública, e eu vou chamar esta faixa, e eu vou chamar os dados da pista para que ele não, uh s de modo que ele está no mesmo nome é o outro e assim lá dentro e simplesmente vai
tomar Aquelas duas linhas aqui. Então eu vou pegar as propriedades de lá nos dados de negociação e aqui, eu vou fazer referência a uma trilha pública tentando dados, que eu vou para a faixa assim, e sempre que eu faço esta nota é que se eu voltar no editor agora, você pode ver que tudo vai simplesmente desaparecer, e vai desaparecer porque esses dados de trilha não são sobreviventes por padrão. Portanto, isso significa que não pode ser salvo no formato de arquivo da unidade e, por isso, precisamos mudar isso. Vou chamar o sistema Sarah Realizável. E então este é um atributo que diz que esta classe é realizável pela NASA e assim todas as propriedades podem ser esterilizadas. E agora vou voltar para o editor, e o que vemos é que agora temos a faixa. E então a pista está aqui e assim podemos mudar, uh, os perímetros que nós tínhamos e eu poderia ter várias faixas também, por exemplo, eu poderia fazer uma lista de faixas. E o que eu estou recebendo agora Teoh anúncio é que enquanto nós passamos, eu também quero ser ah, capaz de decorar este inspetor um pouco. Eu vou usar um cabeçalho como este, que Duncan muito legal descontraído. Eu estou indo para este jogo que configurações como este e eu também vou adicionar um pensamento que apenas para ter certeza de que as pessoas usuários do editor vai entender o que é isso. E então eu vou apenas adicionar número de batidas por minuto como este. E eu também quero adicionar um atributo de intervalo para que não possamos ir, por exemplo, em zero Bittner minuto e então eu vou usá-lo intervalo intervalo. É revisado. E assim o atributo de intervalo simplesmente terá um mínimo. Tudo apenas dizer 30 e máximo vai ser 360 o que deve ser difícil o suficiente, eu acho. E de modo que isso? Não, se eu voltar para o editor, podemos ver que eles vão ter as configurações de reprodução e as dicas de ferramentas. Isso é Ah, isso já é muito legal, no entanto, , faz com que seja meio difícil de salvar porque, ah, isso está tudo em uma cena. Então eu poderia basicamente lá A informação ainda está em referência no comportamento motor porque o é o comportamento do dinheiro que faz referência e cria e Cyril olhos uma nova faixa dados. E então isso não é muito útil para manipular no editor. Se eu quisesse ser capaz de varrer faixas razoavelmente e nem em tempo de execução, porque ao mesmo tempo eu definitivamente quero ser capaz de apenas manter um jogador e apenas varrer os discos de alguma forma. Então eu só quero ser capaz de suar as faixas e apenas não ter que trocar o jogador para varrer a faixa que ele faz referência. E então isso é o que vamos tocar no próximo vídeo quando um Baluch Annette teve que Tom Lee isolar a medalha de pista do comportamento motor.
7. Como fazer os dados de dados personalizado: Então neste vídeo nós vamos estar olhando para como isolar totalmente a medalha de pista do comportamento
motor para que possamos fazer referência a qualquer faixa mantendo a mesma do player comportamental. E então o que eu vou fazer aqui é então voltar no roteiro do caminhão aqui e, basicamente, eu vou me livrar disso aqui assim. E eu vou levar isso de volta para a pista assim. E eu vou simplesmente me livrar disso também. E agora eu vou dizer que a faixa não é mais herdar de um de comportamento, mas herdar de descritivo vontade objeto. Descritivo será objeto, representa dados. Então, é um objeto Cerulli Zobel há outras maneiras para vários objetos olhos que você pode usar
centralização XML . Você também pode usar a civilização Jason se você quiser trocar dados. Ah, totalmente fora da unidade, é muito fácil trocar dados usando outros formatos. Mas a maneira mais fácil que dentro da unidade para fazer isso no editor em at Runtime é usar o script, objeto
herbal e objeto tão descritível e me perder para criar dados personalizados dentro do Unity Editor e para referenciá-los mais tarde. E então o que eu vou fazer Tio Tio aqui é então se eu fizer isso, então se eu voltar ao teatro, então isso não vai mais funcionar. Então eu vou simplesmente me livrar do jogador de atletismo. Como podemos ver aqui. O componente track on me diz que o script Associated não pode ser carregado porque
ele não é mais um comportamento motor. Então não, eu vou simplesmente me livrar desse objeto aqui. E há um atalho muito rápido que me perde para criar os dados. E eu faço isso adicionando o menu de criação de ativos. Atributo aqui e ali. Vou dar-lhe um nome Munyon. E então o nome do dinheiro vai ser Eu vou apenas dizer unidade Coach Flash bate flash um novo rascunho como este, e eu também estou esperando para dar-lhe um nome fino padrão eo objetivo do arquivo padrão vai ser nenhum beattrack dot asset e por causa disso vai ser apenas um trunfo. Tem que ser salvo, não é útil. E então eu vou fazer isso assim e fechar a declaração de atributos e agora quando eu voltar aqui. - Sim. O que você pode ver é que eu não vou entrar aqui e eu nunca posso criar no
menu final aqui, você precisa de um treinador bate nova faixa. Então primeiro eu vou criar uma nova pasta e eu vou chamar isso de faixas como esta e nas faixas, eu vou criar uma nova faixa. Eu vou chamar isso de 120 bpm assim e você pode ver que eu tenho agora a habilidade de
fazer praticamente o que eu estava fazendo antes. Mas isso agora está em um formato de dados. Agora está no arquivo que eu posso usar mais tarde. E eu também posso, uh, salvar isso e distribuir isso muito facilmente. É muito fácil de lidar com editor indie e muito fácil de olhar em tempo de execução agora que temos Ah , esta das coisas mais importantes que precisamos fazer quando criamos modelo de dados é maneiras rápidas de
gerar dados falsos ou dados de degustação porque simplesmente não quero ter que entrar aqui e dizer, bem, eu quero ter cinco e o primeiro com três vai ser menos um e assim por diante. Eu quero ser capaz de gerar esses dados de teste de tese antes de criarmos qualquer tipo de
dados de editor perder para ambos ou para os dados dentro do editor, que nós vamos tocar mais tarde. Mas eu quero ser capaz de gerar alguns dados de teste rapidamente, e isso é o que vamos tocar no próximo vídeo.
8. Gerando dados aleatórios (para fins de teste): Então, neste vídeo, vamos estar olhando para como gerar dados de degustação rapidamente do editor. Então, para fazer isso, eu simplesmente vou voltar no,
uh, uh, modelo de
pista aqui, e o que eu vou fazer aqui é, então eu vou começar a adicionar algumas informações para gerar esses dados. Normalmente, você não colocaria as informações que geram os dados no próprio modelo. Você colocaria isso em uma classe A líquida porque a classe editor será responsável por
gerar os dados. Assim, os dados não devem conter os erros paramédicos que você usou para gerar os dados . A menos que você queira ser capaz de regenerar os dados e você quer centralizá-los lá rapidamente, e assim para torná-lo muito fácil, eu vou apenas colocar isso no próprio modelo de pista e o mais novamente para colocar os dados métodos de geração no próprio modelo de pista para que pudéssemos eventualmente usar esses métodos em tempo de execução e ser capaz de gerar alguns dados de fade aleatórios no tempo de execução. Mas você normalmente manteria isso fora dos trilhos. O modelo de dados para colocar isso em classes de edição que usavam para gerar o próprio modelo. O que eu vou Teoh dizer aqui é que eu vou primeiro referenciar um
inteiro público estático , que é o que eu vou chamar de entrada e que eu vou torná-lo difícil para porque eu quero que isso seja o mais gerado é possível. E assim por agora nós definimos que queríamos ser capaz Teoh usar entradas para esquerda para cima e
direita e para baixo para que ele faz quatro entradas. Mas poderíamos possivelmente usar versões diferentes como um fluxo para baixo versões, uma versão mais simples com apenas duas ou três entradas ou um mais complicado como um
usuário Ah vantajoso , um jogador avançado como um profissional, você jogador pro tipo de entradas. E então teríamos que lidar com mais do que apenas quatro entradas. Então eu preciso fazer referência ao número de entradas que eu quero usar para gerar os dados para que ele vá de 0 a 3. Ou poderia ir de 0 a 7 se eu quisesse ter, tipo, oito entradas diferentes. E lá eu vou simplesmente copiar baseado, uh, isso porque isso só vai levar muito tempo para digitar. Mas deixe-me explicar o que eu tenho aqui. Então esta vai ser a pré rolagem. O pré roll é como batidas vazias maney que queremos ter no início da pista. Porque se não queremos que a pista comece com a jogabilidade em Stanley, queremos deixar o jogador tomar um tempo para ver as notas comuns. Então este vai ser o número de batidas vazias para não ser tocado no início da faixa. E então vamos adicionar notas. Vamos adicionar batidas por blocos. E assim é assim que as batidas mínimas maney queremos ter em um bloco. E é assim que maney número máximo de praia que queremos ter por bloco. E aqui está o número mínimo fora da praia vazia que queremos ter entre blocos e este é o máximo e o número de batidas vazias entre blocos e no final, os salários têm o número de blocos que queremos gerar. Então a idéia aqui é que nós estamos indo apenas para fazer um grande loop e nós vamos começar a adicionar batidas com base em rend um, valor números aleatórios para fazer isso. Então, para fazer isso de novo, eu poderia colocar o método randomize. Eu poderia colocá-lo em uma classe de editor para que ele só esteja disponível dentro da unidade auxiliada ou não mais disponível no tempo e ainda manter os perímetros na própria classe. Mas eu vou colocar isso na pista por enquanto. E assim é ah, sempre um Teoh útil para usar isso em tempo de execução se quiséssemos gerar alguns dados aleatórios. Então lá eu vou declarar uma nova divisão pública, e eu vou chamá-lo de Run Dise assim e em randomize. A primeira coisa que eu quero fazer é, em seguida, disse que bate é igual a nova lista off inteiros. A primeira coisa que preciso fazer é redefinir isso. Caso contrário, eu vou continuar adicionando a ah, a lista e eles são o que eu vou fazer aqui é então começar pelo rolo pré. Então, para o periférico, eu vou fazer um loop completo, e eu vou dizer para enterrar o seu B é igual a zero e B sendo um menor que pré-rolo e em seguida, ser incriminado cada Luke. Então o que? O que eu estou fazendo que eu estou fazendo batidas adicionar porque é ah, é uma lista. É muito simples. E então eu vou dizer batidas adicionam menos um. Então isso vai adicionar os dados menos um que eu quero dizer para as batidas GMT e então vamos ver mais tarde como podemos lidar com isso. Agora, o que eu quero Teoh também não é dizer quatro e eles são todos seguros para inteiro. E eu vou chamar esse Bloco B l Caylee é igual a zero, então o bloco é menor que o número de blocos e novamente bloquear ser incriminado toda vez. E agora eu vou dizer que eu quero definir um novo comprimento de bloco Como? Maney, quantas batidas vamos ter neste quarteirão? E então lá eu vou definir o vai chamar este comprimento do bloco e olhar comprimento vai ser rasgado um intervalo. Então eu vou usar o intervalo aleatório e você pode ver que eles são uma das coisas que eu vi muitas vezes, na verdade, uh, onde as pessoas tipo de luta é entender que há duas implementações do o método do intervalo. Há maravilhosos os carros alegóricos e um para os inteiros e o outro para os inteiros nos diz que o máximo é exclusivo. Então, se você disser aleatório 01 você vai Onley obter zero. Você nunca terá um. Então, se você quiser um valor que é aleatoriamente zero em um, você tem que dizer intervalo aleatório 02 para que ele vá de 0 para 1. E então lá eu vou usar,
uh, uh, simplesmente bloco mínimo e bloco máximo como este E e Granger disse, mais um para que nós, ah, usamos o outro o valor máximo. Agora eu vou dizer que para inteiro ser igual a zero e, em seguida, ser um menor do que as
reivindicações do Google e, em seguida, o mais, eu vou começar a adicionar algumas batidas. E aí eu vou dizer que terminou seu ser é igual a Brendan Range tipo da mesma coisa. Chave inglesa aleatória. E lá desta vez eu vou usar zero, e eu vou usar a entrada, hum, entradas aqui valor que criaram Ah aqui. Então esta é uma variável estática de modo que ela é compartilhada entre todas as faixas,
e, uh, uh, nós podemos apenas mudá-la mais tarde, se quisermos. E aí eu tenho esse novo,
uh, uh, número
aleatório gerado. E por causa do que isso é baseado em zero, então eu não quero fazer mais um, porque caso contrário isso acabaria com, hum, valor. Haveria fora do euro e lá vai dizer,
uh, uh, batidas adicionar lá causar interesse além da batida que eu acabei de criar assim. E então agora que eu tenho isso, uh, o que eu também posso fazer é então eu vou apenas fazer a mesma coisa com o intervalo e com o intervalo, eu vou apenas fazer este tipo de aviões buracos como esta extremidade de um comprimento, e lá isso vai usar o intervalo mínimo e do animal máximo como este. E isso não vai usar Interval Blaine para o máximo. E lá é só nós vamos,
uh, uh, desta vez dizer que queremos adicionar menos um como fizemos para o rolo pré. E então o quê? Isto é o que isso vai fazer aqui é então dizer que vamos entrar neste loop aqui para cada bloco que queremos criar. Então vamos começar a criar um bloco, e então um intervalo um bloco, um intervalo, um bloco quando intervalo. Mas não queremos ter um intervalo no final. Não queremos terminar com um intervalo. E então o que podemos fazer aqui é então dizer que se bloquear Então vamos dizer se bloco Ah, picles o número de blocos menos um. Então vamos fazer uma pausa para sairmos do loop celular. Se chegamos ao último bloco e de modo que temos esta função geradora aleatória ah que podemos que podemos usar mais tarde. E então, por enquanto, a única maneira que podemos usá-lo se eu voltar ao teatro só para ter certeza de que tudo está bem lá eu consigo ver todos os perímetros que têm. Mas é isso. A única maneira que ele pode gerar esses dados é usando outro script, esse tempo de execução. E então é por isso que trabalhar para começar a trabalhar em um editor personalizado para adicionar um botão personalizado aqui que perde para clicar neste fundo e gerar esses dados aleatórios. E isso é o que vamos fazer no próximo vídeo
9. Editando os dados com um inspetor de propriedade personalizado.: Então, neste vídeo, vamos criar um personalizado feito tanto para a classe de pista que perde Teoh, Adicionar alguns botões aqui que vai é para acionar o método randomizado que
já implementamos . Então vamos entrar no roteiro aqui. E eu vou criar uma nova pasta de set que eu sou Canticle 80 lá. E é muito importante nomeá-lo editor assim para que,
uh, uh, os scripts que estão nesta pasta não serão avaliados em tempo de execução. E assim, sempre que você construir, todos os scripts que estão em uma pasta do editor não serão levados junto. O edifício não gerará erros à medida que você usa e faz referência a algumas classes de edição. E nesta pasta do editor, eu vou criar um novo traje, script
curto, que eu vou fazer um editor de trilha assim. E agora vamos ver o que podemos fazer quando eu, uh, voltar aqui quando você pode ver é que o ah, em um dos desenvolvidos você pode ver que este, uh, objeto tragédia é ou agora uma parte da assembléia. Veja, editor
afiado uh, aqui e não parte do ah, o outro, então você pode ver que ele não existe aqui. Então está lá dentro. E assim ele só será construído para uso no editor. Então, o que? Eu quero ah, fazer. Aqui está e, uh, basta adicionar o mesmo espaço de nome como este e assim. E agora vou-me embora. Teoh disse que isso vai ser em 80 a classe, então ele vai herdar do editor e você pode ver que editor não existe por uma simples razão que eu tenho o e o usando editor Unity. E então agora eu posso apenas dizer editor como este e com uma classe nativa, nós também precisamos adicionar o personalizado que ele 'd ou atributo aqui para dizer que tipo de objeto ele pode obtê-lo e lá estávamos indo apenas para dizer que ele é destinado a, hum, É a pista como esta. E agora vamos fazer referência a atrair de dentro do total. Essa é a primeira coisa que queremos fazer é fazer referência ao objeto que o editor está editando atualmente. Então lá estou eu começando a fazer referência a uma nova faixa, que eu vou faixa legal lá. Temos alguns métodos de mensagem que podemos usar tal é habilitar e assim por diante. Habilitar vai ser acionado sempre que selecionamos um objeto no editor que exibe os dados. E então eu vou dizer faixa igual e, em seguida, também usado Target e Target é um
membro herdado fora do final da classe porque é apenas um botão Jek para eu vou ter que lançá-lo volta para uma faixa como esta. Nós também o que nós também podemos fazer é uma sobreposição para o método que é frio no Inspetor Gree como este e no inspetor pegajoso. Se eu apenas fizer o de um passeio como esse e então eu voltar aqui e agora selecionar a pista . Podemos ver que perdemos todos os dados simplesmente porque não estamos mostrando os dados. Então, se eu quiser exibir os dados, eu posso simplesmente chamar as baías da bóia do Inspetor. E fazendo isso, estou chamando o membro herdado de que estou cancelando a versão herdada do Inspetor Pateta. E então agora eu vou obter Thea os dados exibidos novamente. E agora o que eu quero fazer é adicionar mais recursos a isso e assim fazer
aquilo, o que eu quero fazer é então verificar se nós já temos algumas, ah bits informações na pista,
então eu poderia apenas fazer se o ponto de caminhada bate pontos contagens é igual a zero, então eu quero fazer algo em caso contrário provavelmente exibir uma mensagem diferente e oferecer diferentes, coisas
diferentes lá dentro. O que eu vou fazer é ir e adicionar,
ah, ah, editor vai usar o layout pegajoso do editor para exibir uma caixa de ajuda. E no leme, Boggs. Eu vou dizer que a faixa é ng sempre apenas faixa vazia neste Em Passe uma fita de mensagem, eu vou dizer informações tipo de mensagem como esta. E assim nós só podemos realmente verificar isso. Por exemplo, se eu voltar aqui e eu diria que eu quero zero. Então eu tenho essa informação aqui. Ele me diz que a pista está vazia e então isso é Ah, isso é uma coisa. E agora o quê? Eu também quero Teoh aqui fora não é dizer sobre layout pegajoso grelhando fora botão. E então para as pessoas que já usaram no passado o velho Gu Easy Stam. Funciona como se os óculos funcionassem da mesma forma que o velho caule gorduroso. Então eu estou chamando este método que vai exibir um botão e também retornar o estado
do botão sempre que ele é clicado. E assim ele retornará verdadeiro quando clicarmos neste botão. Então eles também são apenas disse, Gerar Random Trek e vamos passar um estilo de editor passen. É um estilo e usar os muitos, mas em muitos estilo botão para isso em. Então isso vai exibir o botão. Então, se eu voltar ao teatro agora, devemos ver este corpo e gerar faixas aleatórias. Mas não faz nada. Ele só vai fazer algo se eu colocar tudo isso em uma declaração se como este e, em seguida, dizer o que eu quero fazer eo que eu quero fazer é e dizer trilha randomize como este. E esta é a razão pela qual eu coloquei este método antes de eu criar O método é um
método público para que ele pudesse ser facilmente avaliável a partir do editor de faixas porque se fosse, se fosse privado do que a tragédia de sua classe não poderia acessá-lo. E agora que eu tenho isso. Eu também posso simplesmente copiar colar isso e lá eu estou simplesmente indo para mudar isso e lá eu vou definir uma data faixa aleatória como essa para que nós obtemos uma
mensagem diferente e lá vamos nós. Então agora eu tenho gerar faixa aleatória. Eu clico sobre isso, e como podemos ver, o método funciona muito bem. E nós temos todas as batidas e as configurações aleatórias, o fundo. Então talvez nós queiramos realmente tomar isso, hum, diferente. Mas, na verdade, o que eu realmente quero não é exibir todas as batidas assim. E antes que eu faça qualquer outra coisa, o que eu também vou fazer aqui é então adicionar algo muito importante. Qual é? Qualquer uma das utilidades e eu vou. Normalmente, o método é chamado set dirty e tem o objeto track. E isso é muito importante porque sempre que você salvá-lo, projete em imunidade. Quando você salvar um projeto e continuar, salvar cutucou a cena, mas salvou o projeto. Ele salva todos os dados que ele sabe que tem que salvar. E se você alterar algo para um objeto como, por exemplo, um dado, você altera. Você alterou dados em um objeto e você tem que dizer ao editor que este objeto agora está sujo. Portanto, ele tem que ser salvo sempre que você salvar o projeto ou um de vocês salvar sempre que você sair do editor. E agora o que eu também quero que Teoh faça aqui é então voltar no ah, no objeto de pista aqui. E eu vou simplesmente adicionar um e o atributo aqui para dizer ocultar no Inspetor porque eu não quero exibir as informações bits no inspetor ou pelo menos eu não quero que ele seja exibido exatamente assim. Então agora o que eu realmente quero Teoh você tem aqui são apenas as configurações de reprodução, as configurações aleatórias, os títulos de gerações aleatórias e, em seguida, a parte inferior. E então o que eu vou fazer aqui e voltar lá e eu também vou tomar o próprio método do inspetor Gooey. Vou levá-lo até lá para cima, para que apareça primeiro. E então o que podemos ver aqui agora é que temos este corpo aqui agora no que eu posso fazer aqui é começar a exibir os dados de uma maneira diferente. E assim para fazer isso, eu vou ah, voltar aqui e eu vou dizer que eu quero ter um 80 lá vai usar editor gree layout, e eu vou usar o grande na visão de rolagem. E eu vou começar sua visão legal assim porque eu não quero ALS os bits para ser exibido no vory em um longo caminho. Então eu quero ir para exibir isso,
hum, hum, dentro de uma visão de rolagem. Mas, como podemos ver, este cruel de vocês espera que uma multidão vetorial saiba a sua posição. Então eu vou ter que fazer referência aqui. Eu vou fazer referência a uma vítima, também, que eu vou chamar de posição como esta e lá eu vou passar a posição assim . E agora também vou usá-lo. Concordei que Lee saiu de novo. E lá desta vez eu vou fazer a visão final de rolagem assim e entre o que quer que seja. Tudo o que eu colocar no meio será automaticamente datado dentro das visualizações de rolagem. Eu vou fazer um loop e eu vou fazer o loop para inteiro. Eu é igual a zero. Eu sou a Liz. Em seguida, o número fora bate nos trilhos da praia que contam assim e eu sendo incriminado toda vez que eu quero exibir. Então eu vou usar o Editor Gooey tarde. Sim, mas de novo. E eu vou usar o isqueiro indígena. Então nós temos maneiras realmente diferentes de exibir um indígena que é um campo, ou pop ele e assim por diante. Mas vou usar o indígena mais tarde. E assim a calúnia do imager está pedindo valor e um valor mínimo e máximo. Então lá eu vou dizer que eu quero passar trilha pontos batidas e, em seguida, tomar ah, a corrente seja informação. E então eu vou dizer que o valor mínimo é menos um no valor máximo vai ser ponto de pista em cadela. E, na verdade, isso vai ser as entradas da faixa de vidro menos um, porque é ah rastreou, que é
uma isso vai ser as entradas da faixa de vidro menos um,
porque é ah rastreou,
que é
umapropriedade estática. Então é um sensato no nível de classe, não no nível de instância, e para que eu só vou fazer isso assim, e se eu voltar para o inspetor, então eu posso ver dentro de uma visão de rolagem todas as informações. O que realmente não podemos é,
porém, porém, que a visão de rolagem não é herbal de rolagem. E não é escalável porque dizemos a ele para exibir um pergaminho de você dando a ele uma posição. Mas nós nunca atribuímos isso de volta assim e esta é a maneira que a maioria do editor de widgets vai funcionar. É que o fascínio que você exibir vista de depósito, dada uma posição,
e, em seguida, ele também retorna a nova posição. Então podemos simplesmente atualizá-lo assim. E como estamos nisso, o que também podemos fazer não é dizer que podemos. Agora é os dados gerados aleatoriamente. Ao fazer isso, vou simplesmente dizer que exibimos o valor. Mas se esta terra de mudanças, então atualizamos a desvalorização também. E se eu fizer isso, então só eu posso agora rolar aqui. Mas eu também posso atualizar e alterar o valor se eu quiser que ele assim. E para terminar isso, o que eu também vou fazer aqui é então adicionar alguma outra decoração para ah, potencialmente filtrar a informação. Então eu também vou adicionar um novo valor touro, que eu vou chamar de exibição de dados de praia como esse. E lá dentro só queremos fazer tudo isso se tivermos alguma informação, porque caso contrário, se não tivermos nenhuma informação, não faz sentido tentar exibi-la. E então eu vou fazer algo assim se quisermos exibir a van de dados que eu vou
e chegar a isso. E agora eu vou e outro widget, que é o editor Ah, 80. Lá fora Greeley, e é frio, total dúvida e ah, nós passamos o valor e passamos simplesmente o nome. Então eu vou apenas dizer, apenas reproduzir batidas como esta em, é
claro, atualizou o valor para que ele exiba o valor e atualize o valor. Se clicarmos nele e depois dissermos, se isso for verdade, então mostraremos o resto fora da UE. Então eu vou dizer este retorno no editor. E agora o que podemos ver aqui é que temos uma boa dúvida completa que perde para exibir ou não exibir caloteiros como este, e eu posso atualizar as faixas. E então eu poderia, por exemplo, agora ir e criar uma nova faixa para testar isso e o que podemos ver agora. Aqui, isso é interessante. Ah, o que nós vemos aqui é que, uh, sim, claro, sempre que criamos para os primeiros quadros que acabamos de criar Ah, isso. Ah, esse objeto, então essa lista ainda não foi inicializada. Então o inspetor está tentando acessar a outra propriedade do número da
propriedade conta dessa lista, e o mínimo ainda não foi inicializado. Então, o que podemos fazer Aqui e dizer faixa. Eles têm faixa que bate dúzia igual. - Não. E a contagem é ah, zero e de outra forma, na verdade, só vai fazer outra coisa. Faremos se isso for não, então retornaremos assim. Isso é ainda mais fácil e seguro. Nós só iria exibir iria exibir o bege no Inspetor Gooey. E se não for inicializado
,saímos do método. E se não for inicializado
, E então vamos tentar isso de novo. Vou me livrar disso e fazer de novo para ter certeza que vou limpar isso. Vá e crie uma nova faixa. E lá vamos nós, pouco trabalho. Então, e eu vou chamar isso de 90 bpm assim e mudar esse valor aqui. Sinto-me assim lá dentro. Podemos ver que a pista está vazia e, em seguida, podemos apenas ir e disse Gerar faixa aleatória. Ok, então é isso para o modelo. Por agora. Nos próximos vídeos, vamos começar a trabalhar em Track View.
10. Configurando o componente de faixa: neste vídeo, vamos começar a trabalhar na visualização da faixa. Então, na porta de visualização do controlador de visualização modelo, uh, padrão aqui. E então o que eu vou fazer Aqui e voltar para a pasta de scripts e em um novo
script C curto , que eu vou seguir de você assim, e eu vou classificar isso. É agora, mesma coisa. Eu também vou colocá-lo no nome espaço bate isso. Ok, assim. E agora aqui vou me livrar de tudo isso por enquanto. E aqui dentro. O que eu sei é que este componente requer algumas outras competências para funcionar corretamente. Então eu vou começar a adicionar os atributos de componentes exigidos e usar um tipo off. E sei que requer uma vertical, e não encontro a vertical. Simplesmente porque não estou usando o motor da unidade. Você, por quê? Vou adicionar o uso de você ao motor. Você I primeiro e depois eu posso Não, você usa o grupo de layout vertical. E então esta é a primeira coisa que eu quero que Teoh apenas especifique. E eu também queria, uh, usar aqui. Eu sei que ele também requer um conteúdo febre tamanho comum, trabalho no
dedo do pé provavelmente. Então eu vou adicionar isso para que sempre que eu adicionar esses componentes a qualquer objeto e ele irá automaticamente adicionar esses componentes se eles estão faltando, e eu sei que também é comum e que tem que ser colocado em um, um em um objeto u Y. Então eu também vou adicionar um com transformação direta como este. Então, a mesma coisa de novo. Só me certificando de que vou ter todos os componentes e avaliar para acessar todos os comentários que eu preciso. Agora o que eu quero Teoh. A primeira coisa que quero fazer aqui é fazer referência à pista, claro. E por enquanto, vou fazer uma referência direta à pista e veremos isso mais tarde. Queremos ter uma nova referência indireta para a pista, mas lá eu quero ter uma referência para as faixas e vamos fazer uma referência a um objeto de
trilha, que eu vou rastrear e vai ser privado, mas vai ser tão realizável. Então vamos usar os atributos preenchidos serializados e é privado porque não
queremos ter qualquer outro comum e começar a mexer com isso. Este membro geralmente é uma boa idéia para apenas usar variáveis privadas. E se você quiser existir, então eu tinha algumas propriedades, como obter métodos definidos. Mas eu também sei é que eu quero fazer referência aos pré fabs que eu vou. Em vez disso, ela comeu, como a esquerda para cima, para
baixo objetos direita que eu preciso em vez dela oito com base nos dados que eu encontrei na pista Então, novamente eu estou indo Tio Tho transformar direta. Eu sei que esses objetos precisam ter uma transformação vermelha. Eu sou apenas bom. Em vez de apenas fazer referência a um objeto de jogo, eu vou fazer referência a uma transformação de destroços para que eles me percam para ter certeza de que o objeto que eu coloquei tem um registro do componente. E então eu vou chamar isso de esquerda assim e novamente, eu vou usar,
uh, uh, vários atributos cheios de olhos e lá eu vou apenas fazer a mesma coisa com direito para cima e para baixo assim. E eu também preciso fazer referência a outro, que vai ser a referência ao er espaço vazio ou divisor ou você nomeá-lo eu também
vou fazer uma referência a outra transformação naufragada, que vai ser os restaurantes do objeto atual que eu vou chamar isso são transformados. Agora eu vou começar a adicionar eu poderia usar o método de despertar, mas eu não tenho certeza de que a unidade que você vai ser inicializada no despertar e eu não quero ser
capaz de controlar sempre que ele é inicializado. Então eu vou um novo método público fornecer que eu vou chamar bin ele e vai ser inicializar ervas com uma faixa. Então, esse era outro objeto, outro componente para inicializar esta visão de faixa, dado que ela era uma faixa. E então eu vou chamar essa faixa assim e assim e mas lá eu vou adicionar
também a mensagem da história, e lá eu vou começar a fazer o nele e então eu vou passar a faixa que eu faço referência localmente no neste e lá dentro, a primeira coisa que eu preciso fazer é dizer que ou transformar é igual a transformar fora do assunto , mas como uma trincheira direta uma como esta para que eu nunca possa voltar para dentro. O editor aqui, e eu vou selecionar a faixa de você, e eu vou adicionar o componente tentar vista assim. E lá tem uma referência a uma pista. Então lá podemos ver que mesmo se eu clicar sobre isso aqui, esta unidade irá automaticamente me mostrar, uh, o serializado de objetos que correspondem ao outro tipo. Uh, aqui. Então eu vou escolher este aqui e ali. Podemos ver que temos esquerda direita para cima, para baixo e vazio. E então o que eu vou fazer aqui é que eles vão para o pré fabs e eu vou pegar um aqui, que eu vou duplicar. Vou chamá-lo de vazio e mostrar ao sujeito o que vou fazer. Aqui está e simplesmente desative os componentes da imagem para que ela não seja exibida. Mas mantemos o naufrágio transformado com o tamanho, que vai separar o outro objeto. E eu também vou ser lido através do operável aqui. Então, para fazer isso, provavelmente vou arrastar e soltar isso na tribo. Tu aqui e depois livra-te do Perot. Eu vou dizer que isso vai quebrar o breve acaso, eu vou dizer que sim. E então eu vou clicar em aplicar para, uh, data o assunto aqui e agora na visão de pista nas referências aqui. O que eu vou fazer aqui é em Dragon caiu para baixo para baixo, riu para a esquerda e direita para a direita e para cima e o M G para a referência
vazia como esta. E agora vou me livrar dos prefeitos que eu tinha na vista das árvores. Então agora temos tudo o que precisamos para começar a preencher o TRAV. Tu com a informação que temos da pista, e isto é o que vamos fazer no próximo negócio.
11. Leitura dos dados e população de visualização: Agora que temos todas as referências aos objetos que queremos desmanchar ela comeu no editor. Eu vou voltar para a classe track view aqui em In the In the method, Eu vou começar a adicionar o ah,
os métodos de criação de instâncias. Então a primeira coisa que queremos fazer é fazer uma referência a um objeto de jogo. Então eu vou fazer uma referência de objeto de jogo, que eu vou chamar isso de triste, e então eu vou começar um novo para cada um. Geralmente é dito lá que é melhor usar um loop for do que um para cada loop
maneiras de desempenho de loop . Mas como isso vai ser para baixo apenas uma vez, o para cada um vai ser apenas é bom. E então eu estou indo para dio inteiro a faixa em que bate. Então, para todas as informações, todas as informações de bits que temos na pista que eu quero fazer eu quero instância ela comeu um novo objeto e lá eu vou fazer referência a um novo objeto de jogo e eu vou fazer switch ser. E assim eu vou dizer que o caso zero. Então, se a informação for zero. Significa que queremos fazer à esquerda e outra vez, totalmente arbitrário. Decidi que seria deixado para baixo taxa. Mas pode ser qualquer coisa. Então vou dizer que G é igual à esquerda. E lembre-se, a esquerda é ereto França quente. Então eu preciso acessar sua propriedade objeto de jogo assim. E assim vai ser assim. Então, e então eu vou apenas quebrar assim e, em seguida, de lá novamente, basta ir e copiar empresa baseada em cópia baseada em todos os casos diferentes. E então eu vou dizer que se este for um ou dois ou grátis, então isso vai ser deixado para baixo. Mas e à direita e ali, em vez de adicionar o caso menos um, eu só vou usar o caso padrão. E então isso significa que se por algum motivo nós adicionamos alguns, como outros números inteiros, que nós não suportamos, então nós apenas usaríamos o padrão para, uh, o outro objeto e lá estavam indo para usar o objeto vazio. Então eles são basicamente eu estou fazendo amor com você. Estou criando uma nova referência a um objeto de jogo e selecionando o objeto de jogo com base na
batida que eu ainda e agora o que eu preciso fazer é e simplesmente em vez disso, ela comeu esse objeto. Então eu vou fazer objeto de jogo em Stan. Ela comeu e, em seguida, todo o G, e então eu vou passar a transformação. Então todos dizem, pegue a transformação deste objeto assim. Vou passar a transformação atual deste objeto eso em que ele entra. O Stan. Ela odiava neste objeto como uma criança desse objeto. E isso como vimos, porque temos os , outros dois componentes,
o grupo de layout vertical no futuro Constant Sezer, isso irá definir automaticamente a exibição. Provavelmente. Então vamos tentar isso. E agora temos isso. Temos a referência à pista. Temos a referência a todos os outros objetos. E assim que eu começar, então eu deveria ter todas as informações configuradas. Provavelmente agora, , podemos ver isso, e embora uma coisa que podemos ver é
que, obviamente, começa pelo primeiro objeto. Então começa. Ele acrescenta que o 1º 1, em seguida, o 2º 1 que o 3º 1 e assim por diante e assim por diante. E então a questão que temos aqui é que a faixa é de alguma forma invertida porque começamos a adicioná-la pelo bebê no início. Então, há duas coisas que poderíamos fazer Thio para corrigir isso O primeiro 1 é que poderíamos simplesmente substituir o para cada um com um loop completo em uma contagem para trás do final ao início e da outra maneira que podemos fazer e que eu vou preferir porque uma pequena alça de meteo. O objeto que criamos é tomar uma referência. Então eu vou pegar um Eu vou fazer uma referência a uma transformação e eu vou chamá-lo View, e eu vou dizer que ele vai ser igual a esta que transformar. Então eu estou fazendo uma referência à transformação fora do objeto que eu acabei de criar. E agora vou salvar-te. Não se sente como primeiro irmão assim. Então isso significa que sempre que eu adicionar um objeto, eu vou adicioná-lo para o topo fora do do Harrick E. E assim, fazendo isso sempre que eu comecei isso novamente fazendo isso, então ele vai adicioná-lo e levá-lo para o topo porque caso contrário, é adicionado ao fundo. Então eu adiciono e levo para o topo. Eu não levei para o topo e assim por diante e assim por diante. E assim isso simplesmente inverterá provavelmente a pista. E então o que podemos ver é que a pista começará automaticamente pelo pré rolo. Ok, então agora eu vou simplesmente redefinir a posição padrão do tributo para zero em Porquê? Para que ele começa no início da tela e eso lá novamente e o que podemos ver que este sistema de três D. U. U.
Y é olhos para um bom realmente perde dizer que queríamos que esta tela para dizer que o 100 pixels da parte inferior da tela ou 200 pixels e assim por diante e então nós realmente obter Teoh para dizer e onde a faixa vai acabar na, uh resultante dois D tela. Agora que preenchemos a faixa com ALS,
as informações de bits que queremos ter a faixa para rolar automaticamente Talwar na câmera , e isso é o que vamos tocar no próximo vídeo
12. Animação de trilha: Então, agora que temos a visão de faixa preenchida com todas as informações do
modelo de dados da faixa , queremos que a visão de tentativa também role automaticamente com o tempo. E para fazer isso, vou voltar para a tribo. Você script aqui, e eu vou começar a fazer algumas referências à sua posição e modificar a sua posição. A primeira coisa que vemos aqui é que a posição de um objeto em Ah, vocês dois são referenciados por uma vítima, também. Mas não quero manipular os dois continentes. Eu só quero manipular um dos dois componentes disse Para fazer isso, eu vou usar um pouco de, ah, truque, Teoh, fazer uma referência à posição. Então eu vou fazer um vitorioso para mencionar que eu vou chamar posição e por isso vai ser um privado por padrão. E lá eu vou adicionar um excesso er então eu vou Teoh fazer basicamente eu vou fazer uma propriedade. Então lá eu vou usar um snippet de código para criar rapidamente uma propriedade e ter um realmente tocado em criar seus próprios modelos de código. No meu treinamento anterior lá e basicamente, eu só quero dizer que eu quero fazer um flutuador, e ah, lá. Vou chamar-lhe posição como esta, mas não vou usar isto. Eu vou usar. Eu vou fazer um pequeno truque onde o viável é uma vítima também. Mas o excesso está flutuando lá dentro. Sempre que acessamos a posição de valor, queremos retornar a minha posição. E sempre que modificamos o valor, então queremos comparar o novo valor com a posição Y. E se for diferente do que queremos atribuir o componente y da posição ao valor e o que vamos fazer aqui é que sempre que ele fizer isso, queremos mudar. Queremos mudar a posição dos destroços, transformar. Então eu também estou fazendo Richt transformar não ancorado. Posição é igual e todos eles vão e dizem posição. Então posição ancorada posição é uma vítima também. E isso é o que queremos atualizar. Mas não queremos atualizar ambas as competências. Não queremos lidar com o componente X. Só queremos lidar com um componente. Então fazemos um flutuador para trás, Irmã que retorna a posição Y e que muda a posição Y fora da
posição ancorada sempre que ah, sempre que mudamos. E agora o que eu quero fazer é ah, fígado começando sempre que eu,
uh, uh, inicializei a vista, eu quero dizer que a posição é igual a nossos trens para ele ponto ancorado posição. E eu faço Há apenas para, ah para inicializá-lo, apenas no caso de teríamos tido um, hum, e compensar o começo. E agora, quando eu fizer isso, eu também vou adicionar uma nova, uh, mensagem de
atualização fazendo isso e lá posso dizer posição menos ical, Al, pouco tempo passado. Não construa um tempo e multiplique este menino e valor arbitrário por agora, antes de entrarmos no controlador de jogo para definir todo o tempo adequado com base nos bits por minutos e assim por diante. Então eu vou multiplicar isso por dois por agora, apenas Teoh para ver o que isso faz. Ok, então nós vemos que ele está se movendo, mas está se movendo muito devagar, então eu vou multiplicar isso por 20. Ok, então está se movendo, mas é contra mover vários solitários, então eu vou multiplicar isso por 100. Tudo bem, lá vamos nós. Temos nossa prévia agora. Trabalho. E eu poderia ter tido um multiplicador de velocidade para a visão de pista. Mas não é o ponto, porque esta visão de pista só vai ser conduzida pelo
controlador do jogo . E é o trabalho da arma lá, o controlador de jogo para seguir. Será que isso desaceleraria? O viajante deve baía. E agora a visão de pista em si. E isso é o que vamos fazer no próximo vídeo, já que vamos começar a trabalhar no do jogo,
parte do controlador de visualização do modelo.
13. Manipulação de entradas personalizadas usando códigos chave: Então, agora que temos a tribo em que você trabalha, queremos começar a trabalhar na parte controlador do controlador de visualização modelo, que vai controlar a vista e o modelo. Neste exemplo. Ele não tem que atualizar o modelo, que é parte do paradigma do controlador de visualização modelo no início é que o controlador faria um dia os dados lá, ele realmente não tem que atualizar os dados. Ele simplesmente tem que ler os dados e também trabalhar com a mecânica, o que está de alguma forma nos levando para uma versão ligeiramente diferente do controlador de visão modelo que, como, maneira de conhecê-lo. O que eu vou fazer aqui é criar um novo objeto de jogo que eu vou chamar de
gerenciador simples jogo ou um controlador. Traga isso e eu vou redefinir sua posição, e eu vou adicionar um novo confiante que na jogabilidade clínica, controlador como este e eles estão quase olhando para reposicionar. Este é o script aqui na pasta de scripts e então eu vou iniciá-lo. Este este controlador de jogo primeira coisa novamente, indo Teoh no espaço nome aqui para que as classes antigas estão dentro do mesmo nome, espaço. E agora eu vou começar a trabalhar neste eso Eu vou manter isso em direção a, uh, mensagem nas mensagens de atualização. Bem, uma das regras do controlador de jogo aqui será tomar as entradas em breve. Você quer tirar a parte de entradas do controlador de jogo para que você possa ter um controlador de
jogo totalmente independente da plataforma. E isso é algo que vamos tocar no capítulo posterior como ter que
lidar com entradas e gerenciamento multi-plataforma, entradas multi-plataforma e configurações de exibição. Mas por enquanto, vamos colocar as entradas e o controle de jogabilidade. E basicamente, quando eu quero fazer dentro, a atualização é testar se sexual tal tecla foi pressionada onde tal botão foi pressionado. E há duas maneiras de fazer isso em uma imunidade, você pode usar as sessões de entrada ou você pode usar um código de chave. E o que eu vou fazer aqui é usar um código de tecla porque ele perde usar um teclado ou um pad de
jogo também. Então lá eu vou começar a usar um batedor e álcool. Ah, isto aqui. Entradas como esta em seus próprios adicionam um novo campo de código de chave,
que eu vou chamar de esquerda assim na mesma coisa. novo campo de código de chave, Vai ser privado, e vai ser serializado. Então eu vou fazer isso assim, Bruce, e então esquerda,
uh, uh, para baixo, uh, e direita assim. Então esses seriam meus quatro códigos chave para acionar isso, colocar isso no inspetor, e me perder sempre que eu voltar no comando Campbell aqui. Isso me permite escolher qual chave eu deveria estar usando lá. Eu posso usar as teclas de ervas do teclado, mas eu também poderia usar em qualquer outro pad de jogo, botões e coisas assim. Então eles vão usar a seta para a esquerda, a sala para baixo e a operação Arrgh! Na estrada certa, assim. E estes serão os meus em Butch. E então eu vou chamar isso de entradas como esta em sua também começar a fazer uma referência para a faixa. Então, novamente, eu estou olhando para replicar isso e ir visitar a pista. E lá eu vou usar um campo serializado colocado para uma oração. Viável? Vai ser uma faixa privada, que eu vou chamar de faixa como essa, e esta vai ser a referência para a faixa. E agora, esta é a referência para a faixa,
eu também quero deixar outros componentes
acessarem a faixa, mas eu não quero que eles sejam capazes de alterá-la. Então o que eu vou fazer aqui é então criar um excesso de er como este e eu vou torná-lo um público e vai ser do tipo track. E eu vou fazê-lo trilha como este com no final de marcou e lá eu vou
implementar contra, mas nenhum set. Então, implementando você fica assim. Eu só estava dizendo para retornar faixa. Então, fazendo isso, eu estou perdendo outros comentários para acessar esta faixa, mas sem ser capaz de alterá-la. E então, onde isso é algo que vamos definir no editor e que não podemos mudar de outro competente e bem, obviamente mudar isso mais tarde quando queremos deixar o jogador escolher uma faixa em tempo de execução e queremos ter como, uma pista ah Pekar vista ser capaz de atribuir uma nova faixa para o gerenciador de jogabilidade com o controlador de
jogabilidade. Então o que eu também estou fazendo Teoh fazer aqui é adicionar um Este é outro truque rápido aqui, mas eu vou adicionar um novo, uh, resumo aqui. Isso me permite obter informações sobre o que esta propriedade está fazendo aqui. obter informações sobre o que esta propriedade está fazendo aqui. obter informações sobre o que esta propriedade está fazendo aqui. obter informações sobre o que esta propriedade está fazendo aqui. Então eu vou fazer isso. Eu gosto disso. E eu vou chamar isso de o evento atual. E então, se eu entrar em outro componente do que eu quero saber o que esta propriedade de pista é, então eu, uh esta é a informação que eu posso obter. É praticamente a mesma coisa é uma dica de ferramenta ou assim quando eu faço dica ferramenta como esta e disse que a dica ferramenta para batidas faixa para jogar, eu acho que. E então isso vai aparecer no editor e isso vai aparecer em um comportamento motor sempre que eu vir em cima de uma propriedade. Há outra coisa do dia que quero fazer apenas para tornar o pensamento muito apertado. Vou usar uma região. E então eu vou chamar isso de moto ser comportamento, uh, métodos como este. E lá vou acabar com a região assim. Que momentos estamos indo, Tio acrescentou mais tarde, é outra região então E eu vou chamar isso de jogabilidade. Então eu vou dividir isso em diferentes regiões,
regiões ou devaneio, regiões ou devaneio, Handy como você pode mais tarde ir aqui e, em seguida, escolher uma região. É como atalhos que levam você a diferentes regiões no código. Então o que eu vou fazer aqui é então dizer que eu quero ter um novo método e eu vou chamá-lo de, uh, placa batida como este e vai levar um e na bota, que vai ser um inteiro. E então eu vou adicionar um log de depuração dessa entrada como esta, e agora eu vou colocar na data. Eu vou dizer,
se entrada, se entrada, esta é a classe de entrada de unidade obter chave para baixo. Que é essa tecla sendo pressionada na moldura e não em Lee o primeiro quadro que
foi pressionado e todos dizem esquerda assim. Ah, então eu quero dizer jogar bater em todos passar zero, porque a tecla esquerda é basicamente os fósforos, o outro o zero. E então eu vou fazer a mesma coisa com todos os quatro. E assim todos dizem um para e três. E isso vai ser para baixo e, uh, e bem e lá eu também tenho que ah, terminar esta região com n região e não outra região e região como esta. Usar regiões é muito, uh, sim, cheio. Sempre que você sabe que sua classe vai ter, como, um conjunto diferente partes fora sair é o comportamento motor e a jogabilidade. Então lá estou eu só quero me separar. Qual é a parte de inicialização? E onde está a jogabilidade métodos específicos e membros apenas dividindo isso em duas regiões
diferentes. Mas isso é apenas para me ajudar a eso isso quando de manhã se desenvolver. Então agora eu vou voltar para o editor e lá eu vou fazer referência a uma faixa. Então eu vou fazer referência à mesma faixa que eu tenho na, uh na vista de árvore como esta eu vou salvar, e então eu vou começar a tocar. E lá se eu pressionei as teclas de seta do teclado, então eu posso ver que eu tenho esta saída de depuração aqui, e se eu clicar duas vezes sobre ele, ele vai me levar lá dentro. Então eu posso ver que isso está acionando o método bit play em exibição. Mas método vai ser o método que eu vou adicionar código Maura. Mas na atualização, não
tenho muito código para adicionar. Eu só estou pegando as entradas e depois passando para a parte do jogo. Este é de alguma forma algum trabalho pré, como eu sei que mais tarde, eu quero desmontar isso em outro componente fora do controlador de jogabilidade. Então, agora que temos essa,
uh, uh, essas entradas, queremos adicionar a mecânica que diz que cada batida se move na próxima batida e, em seguida,
queremos ter certeza de que sempre que tocamos alguma coisa, sempre que pressionamos e inserimos, queremos ser capazes de fazer a pergunta é a entrada que acabamos de pressionar, a que está a ser pressionada agora e esta é a tomada X que vamos começar a adicionar no próximo para lidar
14. Implementação de temáticas para Gameplay.: neste vídeo, vamos começar a trabalhar na gestão de batidas do controlador de jogo. Então o que queremos fazer é Teoh manter o controle sobre qual batida atual tem que ser jogado no eso para isso. O que vamos fazer é começar a trabalhar aqui e vamos começar. Vou adicionar um novo , método aqui quando,com certeza,
vou chamar a próxima batida. E então, basicamente, este método vai, uh, passo para a próxima batida toda vez que eu chamá-lo assim E lá eu vou colocar um log de depuração lá, e eu vou simplesmente depurar este ditado tick. E então, a partir daí, o que eu quero fazer é então Agora eu quero voltar para o seu Eu vou comportamento métodos e,
em seguida , na história que eu quero usar invocar aqui, eu quero usar, invocar, rebitando e em voga, A refutar. Eu vou dizer que eu queria ir para a próxima batida, e lá eu quero ter cuidado porque isso não é tão seguro, é que estamos usando algum texto, e então eles são basicamente eu vou dizer que eu queria ser chamado Avery beat. Então, por enquanto, vamos fazer um teste rápido e dizer que queríamos começar imediatamente e então queremos chamá-lo
a cada segundo. Então, basicamente, estamos passando um perímetro para o intervalo de, ah, a freqüência que queremos chamar de invocação repetindo. Então agora vamos voltar ao editor e ver como isso funciona. Tudo bem? E então o que podemos ver aqui é que agora temos um tique a cada segundo. Então agora o que eu quero é um sucessor rápido para temar o número off segundos por batida e o número off batidas por segundo que eu posso usar. E então o que eu vou fazer aqui é simplesmente fazer um par de ex-irmãs. Eu vou fazer um flutuador público, e eu vou fazer este segundo por batida, e isso vai ter que obter e um conjunto privado para que eu possa modificá-lo dentro da instância. E Leigh leu de outras aulas. E lá eu vou fazer a mesma coisa aqui com outro que eu vou bater por um segundo agora eu quero inicializar esses valores. E assim, para isso, eu vou implementar o método acordado como este e acordado, eu simplesmente vou dizer segundos por batida é igual a faixa. E então eu vou pegar a informação do bpm da pista, e eu vou dividi-la por 60 assim. E então, basicamente, quantos segundos por batida? É o número de batidas por minuto dividido por 60. E então quantas batidas por segundo, então isso vai ser 60 dividido pela faixa que BPM. E assim estes serão problemas X rápidos que podemos usar em outros componentes para simplesmente se referir ao número off segundos Perbet no número de bits por segundo. E lá, Agora, eu posso usar isso e dizer que eu quero usar batidas por segundo. E na verdade, eu vou ter que, uh, renomear isso e então eu posso agora voltar para o editor e experimentar isso. E lá podemos ver que ele vai muito mais rápido. Como já dissemos, o número de Pittsburgh minutos 220. Então, basicamente temos um carrapato. Cada segundo de saúde. Agora o que eu quero fazer é implementar um outro Exeter, que me permite acessar a batida atual que eu deveria estar jogando. E para fazer isso, vou voltar ao jogo, jogar região, e vou adicionar novas propriedades. Eu vou usar minha propriedade existe, senhor, e vai ser de tipo e ferimento, e eu vou chamá-lo de atual assim. E então o que vemos aqui é que quando obtemos, então simplesmente retornamos o valor da variável. E quando fazemos, A disse, certificamo-nos de que os valores mudaram e, em seguida, re atribuído o novo valor, e eu também quero ver se concluímos a faixa. Então, sempre que chegarmos ao final da pista do que eu quero ser capaz de cancelar a chamada e também,
uh, uh, parar a jogabilidade provavelmente em algum sentido, hum, eventos mais tarde para dizer que nós terminamos a faixa. Então o que eu vou fazer aqui é em primeiro lugar, dizer se, uh corrente é igual à faixa. Cadela. Conde. Então quero usar o Teoh. Cancelar, invocar, e então eu vou passar,
uh, uh, o próximo método beat e eu também quero armazenar algum valor para dizer que se nós
completamos a faixa, então mais tarde eu quero ser capaz Teoh, usar um booleano simples acabou de dizer Se tivermos concluído, então eu não quero mais tomar as entradas em um. Então o que eu vou fazer aqui é ter um touro privado que eu estou indo para ir concluída e lá eu posso agora dizer que nós cancelamos a invocação em. Então dizemos que completado é igual a dois. E agora que eu fiz isso, toda vez que chamamos a próxima batida, o que eu vou fazer agora eu digo correntes mais E então isso vai incrementar a batida atual a ser jogado e então isso vai acionar todas as mecânicas que nós quero que Teoh use mais tarde. Então agora que eu tenho isso, eu quero fazer a correspondência entre a informação da batida e as entradas que nós estamos recebendo a
partir da data e isso é o que nós vamos estar fazendo no próximo negócio
15. Implementação de controles de entrada de Gameplay.: Então agora que temos a batida Tickin, o que queremos é dignidade Teoh, entradas e fazer o muito entre as entradas e a batida atual. A primeira coisa que vou fazer é voltar ao jogo, jogar controlador aqui. Então o que eu quero fazer na próxima batida é Teoh saber se o jogador é jogado e se ele não jogou então a menos que foi uma batida vazia, então eu quero registrar algumas informações perdidas. Eu quero dizer que havia algo para ser lâmina e que nós perdemos isso. Então o que eu vou ah fazer é então voltar aqui e também adicionar logo antes do concluído eu também vou adicionar outro 1.000.000.000 que eu vou chamar, jogado e assim. E agora com isso, eu vou dizer que se nenhum jogado assim e eu também vou dizer faixa e lá eu
vou pegar as batidas e lá eu vou passar a batida atual. Então o que deveríamos desencadear não lembra menos um, que é o valor que atribuímos as batidas vazias. Então eu quero registrar algumas informações que dizem que nós, uh, que nós perdemos o que eu estou indo Teoh para fazer aqui é e dizer D log de depuração pântano E no típico, eu vou usar a string para Mitt Method em que estamos indo para o passado aqui. Uh, uma palavra-chave disso e eu vou dizer, perdeu apenas para dizer qual parte foi perdida. E lá eu vou passá-lo a caminhada que bate e corrente para que saibamos se perdemos ah, esquerda e direita ou um botão para baixo e assim por diante. E assim. E então agora ele também quer dizer que jogado igual a cai como esta acusação Teoh para
colocá-lo desta forma. E agora que eu tenho essas informações jogadas 1.000.000.000, eu vou usá-la para filtrar a data para que eu me certifique de que não podemos jogar duas vezes dentro da mesma batida. E assim para fazer
isso, ele simplesmente vai dizer, se jogado assim ou uh, concluída, então eu simplesmente quero voltar e sair rapidamente da atualização. Inter. Agora que eu fiz isso, eu também vou voltar para a lâmina ser, uh, método aqui. E basicamente, eu vou dizer que se para o truque os grandes e usar a corrente chama menos um, então basicamente jogamos intempestivamente. Jogamos como estávamos destinados a não jogar. Então eu fui Teoh, eu quero olhar algo aqui. E eu também vou dizer mais aqui se e lá eu vou dizer que se isso é igual
à entrada, então nós jogamos o certo a combinação certa em Caso contrário isso significa que nós
jogamos . Mas jogamos a combinação errada. E então eu vou simplesmente Teoh, pegue isso. Uh, aqui e eu estou simplesmente indo Teoh cópia Colá-lo assim e assim e eu vou Teoh, usá-lo aqui e ali. Eu vou, Teoh simplesmente passe a entrada assim. E eu vou dizer que nós jogamos em morrer realmente assim e neste, trabalhando para dizer, jogou direito e lá ia dizer sexo e nós vamos passar os segundos argumentos e vamos dizer esperado isso. Então nós vamos dizer que, uh, qual foi jogado em que um era esperado, e então nós vamos passar entrada e então uh, a corrente que temos aqui e ali. Vou simplesmente basking entrada aqui. Então, basicamente, se foi menos um então e nós jogamos, então nós simplesmente dizemos que nós lâmina intempestivamente. E então nós registramos a entrada. Mas caso contrário, é se a corrente é a entrada, então jogamos direito. E então mostramos qual foi tocada, certo? E então se nós, uh de outra forma, então nós mostramos qual deles foi tocado, e então qual deles era esperado? E então isso é o que precisamos agora era para o controlador. E depois faremos a partida com o viajante para que a visão da pista mostre ao jogador se ele é jogado a batida certa ou não. Então eu vou agora, Teoh, testar esta regra rapidamente. E o editor e assim por diante. Podemos ver que temos um,
uh, uh, esquerda para jogar primeiro, então eu posso planejar, para
cima, cima, e então nós vemos que nós, uh nós recebemos a mensagem está aqui. Eu obviamente perdi muito simplesmente por causa da visão da pista não está jogando na
velocidade adequada . Se você se lembrar. Bem, nós tínhamos a visão de pista para tocar aqui a uma velocidade arbitrária. Então, o controlador de jogo e a visão de pista não são realmente muito. Afunde isso. E é nisso que vamos trabalhar no próximo vídeo.
16. Sincronização com a faixa do TrackView com Controller.: Então neste vídeo vamos começar a ligar o controlador de jogo e a tribo Você. E então a primeira coisa que eu quero que Teoh faça aqui é completar o controlador de jogo e
certificando-se de que ele pára sempre que chegar ao final da pista. Eu queria o Teoh só por cima. Então o que eu vou fazer aqui é em um e eu em um Meritor que eu vou usar para uma coragem em porque eu quero que o eu queria parar no final, mas eu quero Oh, eu queria esperar tempo suficiente para que a tribo você completamente sai da tela. Então o que eu vou fazer aqui é e dizer que eu queria que Teoh se rendesse e então eu vou fazer qualquer um. Aqui, hum, simplesmente indo para adicionar uma espera privada quatro segundos, que em grão-ducal esperar e parar assim e acordada, eu vou dizer Espere e parar é igual a novo Espere por segundos em tudo passar aqui o simplesmente bits por segundo vezes dois para que ele espera por duas batidas e eu poderia apenas usar
informações diferentes . Eu poderia usar o número de batidas na patrulha, por exemplo, ou algo assim. E então eu vou apenas, Ah, vir Mai aqui e depois dizer que eu queria ceder o retorno, espere. Nós não paramos assim e, em seguida, também ser habilitado, igual a quedas para que ele se desligue sempre que terminar de tocar a faixa. E agora o que eu vou fazer aqui é, em seguida, disse que depois que ele é concluído aqui, então eu vou dizer Stored co rotina em sua todos Passar o peso e parar, esperar e parar Torná-lo aqui. Então, agora que eu tenho isso, eu quero ser capaz de vincular totalmente a visão de pista com o controlador de jogo. E há sempre que você tem dois componentes em uma arquitetura dependente, você tem um componente que é dependente do outro. Você não quer ter dependência mútua, e é sempre melhor quando você não tem um competente para atribuir outro ou criar outro . E é sempre melhor quando alguém está simplesmente dizendo que ele vai procurar o outro, e eventualmente vai se inscrever em seus eventos e coisas assim. Então, para isso, o que eu vou fazer é que dizer que o jogo puxando controlador é mais provavelmente o único componente que sempre estará lá. Este é o que faz referência à faixa, e este é o que vai ditar a maior parte do comportamento da jogabilidade. Então este é o que queremos ter o tempo todo. E então o que eu vou fazer aqui é então dizer que eu quero que este seja um singleton, e este singleton é outro paradigma que é totalmente compatível com qualquer outro
padrão de design . Na verdade, os padrões projetados são como referências, e você pode modificá-los e torná-los de alguma forma da maneira que você quiser, assim como padrões e apenas como arquitetura fixa que você não pode modificar. Então o que eu vou fazer aqui é e usar um rápido,
ah, ah, bom snippet que eu estou usando aqui e que vai me perder dizer que eu quero um
controlador de jogo , que é a instância. E então, se tivermos uma rápida olhada no que ele faz aqui é que ele faz referência a uma estática, uh, referência a um controlador de jogo, e sempre que acessamos, sempre que vamos acessar a instância, então vai. E se já não existe, se ainda não está atribuído, vai procurar um na cena. Se ele não encontrar um que vai entrar, crie um. E assim criar um aqui não faz muito sentido porque requer ter informações como qual faixa ele tem que tocar e assim por diante. Então eu simplesmente vou me livrar disso e simplesmente dizer, hum, eles estão aqui que eu quero que Teoh se livre disso e todos eles são apenas dizer, se a instância é não, então eu quero ir e encontrá-lo neste e é isso. E depois quero devolvê-lo. E isso é Ah, isso é como um bem comum melhor. Ah, aqui. E o que eu quero fazer aqui é e dizer que eu quero que a instância iguale isso acordada. E então isso é o que eu vou fazer aqui, o que você tem e uma coisa importante é, ah, quando você faz ah, único denso é ter certeza que sempre que você descarrega, vê, por exemplo porque você carrega outra cena ou algo assim, então você quer ter certeza de que quando você faz não-distraído e na verdade eu usei em deficientes, Mas eu vou fazer em destruir em vez de destruído de instância igual a não. E então eu vou apenas usar o sublinhado um para que eu possa me livrar da SEC é que eu não quero que nenhum outro componente seja capaz de mudar a instância para o controle de
jogo dos controladores de jogo configurados na cena. Então vamos voltar rapidamente para o editor aqui e ter certeza de que estamos tudo funcionando, uh, sem problemas, tudo bem. E agora o que eu quero fazer é voltar para a pista, você aqui. E assim, em vez de ter que atribuir um visualizador de pista para atribuir o controlador de jogo para a visualização de
pista e dizer, Hey ,
track view, este é o controlador de jogo e, por outro lado, eu seria fazendo como um controlador Gimpel. Esta é uma visão de pista. Eu não quero ter que fazer todo esse tipo de amarras. Eu queria ser automático. Então, para fazer isso eu sei que o viajante nunca existirá sem um controlador de aposta, o que pode não ser verdade. outro lado, podemos ter um jogo jogado controle sem uma visão de faixa, mas não o contrário Então o que eu vou fazer aqui é então dizer que eu quero
inicializar sempre que eu estou indo para inicializar aqui, Vou começar. E, por exemplo, em vez de inicializar a exibição de faixa com sua própria propriedade de pista, eu vou dizer jogabilidade controlador ponto instância pista. E assim ele vai encontrar a instância do controle de jogabilidade e, em seguida, encontrar a
propriedade pista . E assim que me perder para simplesmente me livrar desta referência de trilha manual que eu tinha até agora aqui. Isso é muito, uh, muito útil fingir porque eu não quero ter que lidar com diferentes informações de pista. Um na unidade, você um no controlador de jogo e assim por diante. Dentro do método, eu fui para referenciar o tamanho fora de uma vista lance e o tamanho fora do espaçamento porque eu sei que as batidas na tribo você pode ser colocado para fora com algum espaçamento. Então o que? Eu vou, ah, fazer. Aqui é e simplesmente dizer que depois desta posição aqui, eu vou adicionar um flutuador que eu vou bater, Se
você tamanho em outro que eu vou ir espaçamento como este. E sempre que eu inicializei isso, então eu vou dizer que tamanho maior é igual e eu vou simplesmente Teoh, usar o vazio e eu vou pegar a informação direta aqui e a altura do retângulo fora da transformação vazia. E lá eu vou dizer que espaçamento igual a obter componente e eles vão passar. Aqui, Aqui, Vertical só fora. O Doug. Espaçamento como este. E eu sei que eu tenho evitado um pequeno grupo de layout porque eu adicionei antes do que você requer aperto de layout vertical componente. E então eu estou tomando o espaçamento aqui. Estou atribuindo ao outro o espaçamento, valor da
inundação e o tamanho da visão grande. E então, basicamente, o que eu preciso fazer aqui é, em seguida, dizer que usando o tempo Delta, Eu também quero multiplicar este Meu eu estou realmente indo para multiplicar isso pelo controlador Campli. Instância Dodd segundos por batida. E eu quero usar os segundos burbey porque eu vou usar a batida,
vista, vista, tamanho e o espaçamento juntos, que é a quantidade de tradução que eu preciso fazer sempre que avançarmos de uma batida. E então eu fui multiplicar isso pelo número de segundos por batida para que pudéssemos multiplicar essa mordida o tempo Delta. E então devemos obter uma tradução que siga a, uh, a velocidade adequada. E então lá eu vou simplesmente dizer,
uh, uh, Biddy Assize mais espaçamento. Então agora vamos voltar ao teatro aqui e dar uma olhada rápida no componente trator aqui e podemos ver que o Tribune só faz referência a uma pista. Ele irá encontrar automaticamente o controlador do jogo e ligar-se a ele e encontrar sua
propriedade de pista . E então agora, se fizermos isso, devemos ver que é preciso provavelmente, e a velocidade que eu deveria ser capaz de obter muito mais combinações certas que antes. Então, agora, em vez de depender do console para ver se jogamos corretamente ou não, vamos realmente fazer com que a visualização da faixa seja exibida e mude a tela para cada batida. Quando, sempre que nós tocá-los corretamente ou não, e isso é o que nós vamos estar fazendo no próximo vídeo
17. Adição de seu feedback visual em jogada.: neste vídeo. Estamos agora indo Teoh um dia, a vista com eventos do controlador de jogabilidade. E eu vou ficar longe dos eventos do mar Sharp para este curso de treinamento, e eu vou abordar isso em um capítulo posterior. Mas basicamente o que queremos fazer aqui é que queremos tentar ver para ser notificado de para receber notificação do controlador de jogo sempre que jogamos algo, sempre que perdemos algo e para que ele possa atualizar o atual você e dar feedback para o jogador sobre se o seu, uh, perdeu ou jogou provavelmente ou apenas jogou errado. Mas então o que vamos Teoh fazer aqui é antes de tudo, vamos voltar para a pista, e eu vou adicionar um novo, uh em olmo. E então eu vou adicionar uma Nina Teoh. Aqui, Aqui, vou fazer uma publicação, , que vou chamar de Trigger. Vou fazer este gatilho para que possa ser de tipos diferentes. É apenas errado, certo ou errado. Então, basicamente, vamos ter algumas informações muito básicas para dizer. Sempre que com jogado algo certo ou errado ou sempre que perdemos algo e então eu vou adicionar um novo método ah aqui, eu vou fazer um novo método público para que o controlador de jogo possa acessá-lo e vai ser, Ah, evite o método. E eu vou chamá-lo de trigger beat view como este, e ele vai levar um inteiro para o índice porque isso é o que o controlador de jogo sabe sobre,
uh, uh, tudo o que ele sabe é ah, a batida atual. E então o quê? Queremos que Teoh passe isso, e também queremos passar um gatilho. Então eu vou simplesmente passar o tipo de gatilho aqui assim. E lá dentro eu vou fazer um interruptor e um interruptor baseado no gatilho. Pense nisso e diga caso gatilho falhou. E eles são o que eu quero fazer assim no caso de gatilho direito chicotes errados e gatilho certo e quebrar no caso de novo, acionar errado e isso e quebrar novamente. Agora o que eu preciso fazer é referenciar o componente de imagem que eu sei que existe nas
visualizações de batidas as pré fabs que nós filmamos na tribo. Você bem, o que eu vou fazer Teoh aqui é e vir aqui. E eu vou adicionar uma nova lista fora do compartimento de imagens como este, e eu vou chamar isso de vista bit. E quando eu chegar à inicialização aqui, o que eu vou ah,
aderir é um, uh, uh, uso de
lance é igual a uma nova lista de imagens como esta. E lá você vê que eu já tenho a instância de referência toothy criado objeto, e eu estou criando uma referência, uma referência direta para o componente de transformação. Mas o componente de transformação já tem um sucessor em seu muito fácil de acessar. Então, em vez disso, o que eu vou fazer aqui é e dizer que isso vai ser uma imagem e lá eu vou dizer, obter componente e passar imagem como este e dizer que agora eu quero tomar este objeto de jogo
criado instância e, em seguida, eu quero chegar ao componente de imagem que está nele a partir daí. Quando eu posso dizer é ver ponto uh, transformar ponto conjunto s primeiro irmão. Isso é muito fácil. E agora com isso, eu também posso dizer vistas biff que o anúncio e então eu posso passar a exibição que agora é do tipo, uh, componentes de
imagem. E então lá estou eu construindo esta lista de componentes de imagem a partir daí, e assim é muito fácil para mim coisa de fazer, para referenciá-lo mais tarde. E então o que eu vou fazer aqui é que dizer que se nós perdemos, então eu quero ir para o grande enorme e eu quero passar o,
hum, hum, o índice que me é dado e então eu quero mudar o componente de cor que altera o propriedade color desse objeto. E lá vou eu só um colarinho que cinza. Digamos que os deixamos cinzentos quando sentimos falta deles, e então eu vou fazer a mesma coisa aqui. Quando acertarmos, vou dizer amarelo. E quando
tocarmos a parte errada,
vamos usar outro canto que não usamos até Forest,
que é um Salyan. a parte errada, vamos usar outro canto que não usamos até Forest, E assim com tudo isso o que, a visão de faixa agora é capaz de excesso de visualizações de bits individuais que são simplesmente componentes de imagem ,
os componentes de imagem que estão no pré fabs e alterar as cores com base em um tipo de gatilho , que é um ano que adicionamos aqui. E então agora eu posso voltar no controlador de jogo e no controlador de jogabilidade. O que quero fazer é criar uma referência rápida à sua tribo. Então eu vou vir aqui e eu vou adicionar um novo,
uh, uh, arrastou sua referência assim e eu vou chamar esta visão trey, e então eu vou para o gol do velório aqui e no acordado. O que eu estou indo Teoh para fazer aqui é que é uma visão de pista igual a encontrar tipo de objetivo na vista anterior tentativa de
Hollinger. Então, basicamente, ele está dizendo para encontrar a primeira vista de tentativa que definiu na cena e que ele e então o que eu também
posso fazer é ah então dizer se, uh, track view aqui, eu vou dizer apenas se não, tente view, que basicamente diz, se trav você é não, então eu quero emitir um aviso de log de depuração para que, uh, nós sabemos que não há nenhuma visão de faixa na cena, então eu vou apenas dizer, Uh, nenhuma vista Frank encontrado e a cena atual como esta. Tudo bem, então isso é Ah, isso é apenas uma maneira segura de fazer isso em um capítulo posterior. Altach em C eventos afiados e todos tocando em todas as ligações que podemos que podemos fazer em . Basicamente, o que nós realmente queremos fazer é usar eventos para que a visão de faixa assine o controlador de
jogo e para que o controlador de jogo Newton e nem sequer tem que
saber sobre a visão de pista. Então isso é ainda melhor para fazer. Mas em um controlador de visão modelo adequado lá é É ah, usual que o controle e notícias sobre a vista porque é seu velho apertado para o outro. E então agora que eu tenho isso, o que eu vou fazer é então vir na próxima parte aqui onde nós vemos que nós acabamos de perder a parte e eles também são uma faixa para você, e então eu vou apenas pegar a mensagem. Há um método que eu tenho aqui Trigger te deu e então todos passam a corrente, que é a batida atual que deveríamos jogar e depois passar. Trev, você tenta ver a névoa do gatilho assim, e então eu vou fazer a mesma coisa quando também tocarmos as batidas aqui. Então, obviamente, quando jogamos intempestivamente, então há lá. Não há nada para mostrar. E então talvez nós gostaríamos que você mostrasse outra coisa. Mas isso é algo que eu vou falar jovem mais fundo no capítulo posterior como gerenciar o outro. As recompensas visuais e também recompensas de áudio que você deseja dar ao jogador sempre que o jogador joga corretamente ou não. E assim lá dentro. Eu simplesmente vou dizer que lá nós jogamos o certo, uh, pouco aqui e ali. Nós jogamos a batida errada aqui. E então o que acontece aqui é que nós exageramos a trilha de você sempre que inicializamos. Então encontramos o primeiro viajante que confinamos na cena. E então sempre que
jogamos, vamos quando acionar a grande vista. E assim os Trevi receberão. Esta mensagem receberá este carvão para este método e com base no tipo de gatilho, ele mudará a cor apropriadamente fora da batida atual. Então vamos checar isso. E ele tinha que funcionar. Uma das coisas que é muito legal que podemos fazer sobre isso é que nós também poderíamos dizer que sempre que perdemos, por exemplo, eu poderia adicionar um d breu, Então deixe-me apenas fazer isso. E então isso significa que sempre que apertamos essa quebra de depuração, ele vai colocar o editor em pausa, assim como se eu tivesse clicado no botão de pausa aqui. Mas faz isso automaticamente aqui. E então o que podemos ver aqui é que basicamente a zona de gatilho que iria exibir é apenas ah, um pouco. Há apenas um pequeno deslocamento. E acabamos de colocá-la de uma forma que diz ao jogador que o seu pretendia jogar era. Na verdade, ele acabou de perder o que acabou de perder. E então este é Ah, este é o erro que nós cometemos. Então eles só vão mover isso do tamanho do gatilho? Uh huh. Como isso. E então eu acho que agora eu deveria ser capaz de, uh, jogar isso com que falta qualquer coisa. Então lá vamos nós. E na verdade, o que acabamos de ver é bem interessante é que, como você pode perceber, eu tenho um pouco sobre é que eu toquei, e ainda assim ele vai, Ah, em uma pausa. E isso é simplesmente quando nós Ah, isso é simplesmente sobre isso. Lá você pode ver que quando eu jogar a batida, eu não definir o jogado viável para verdadeiro, que faz com que ele realmente disse que nós não jogamos sempre que chegamos ao próximo encontro. E então o que eu preciso fazer aqui é, em seguida, dizer jogado é igual a verdadeiro no jogo, mas método. Então eu fiz. Eu já fiz isto. E agora o que eu também vou fazer é simplesmente me livrar de todos esses, hum, os registros de bugs aqui como eu realmente não preciso mais deles por enquanto. Então eu vou ficar realmente horrível isso e eu vou voltar para a vista da bandeja aqui. Eu vou me livrar desse livro D aqui e agora eu vou tentar isso de novo e que nós podemos ver que ele é jogado direito. Perdeu, perdeu. Vamos tentar jogar errado lá. Estou subindo, subindo, subindo, subindo , subindo. Então, e eu estou fazendo apenas para que possamos ver isso sempre que eu alcanço. Então o virou o amarelo, que significa que eles foram tocados provavelmente, e outras maneiras que eles viram Zion, que significa que não foram jogados errado, e se eu simplesmente não fizer nada além do trem cinza, o que significa que eles foram perdidos. Então, é isso por enquanto. E no próximo vídeo, eu vou apenas fazer um rápido encerramento no DSM fora de tudo o que nós tocamos no treinamento e eu também vou tocar em treinamento futuro está chegando no mesmo projeto para levá-lo mais longe.
18. Retrospectiva de curso: Então, para encerrar isso, vamos rever o que aprendemos ao longo destes. Claro, tivemos uma visão geral rápida do controlador de visão de modelo diferente como padrão de design. Tal é o controlador de vista de modelo, bem
como a vista de modelo, modelo de
vista e o modelo Ver apresentador. E então nós entramos nisso e vimos como colocamos isso em unidade. Vimos que a classe modelo Onley armazena os dados e que não é observado para torná-lo e comportamento
motor, que poderia ser uma classe herbal serializar e que derivar de script
ofertas de objeto herbal é a conveniência de lidar com dados dentro o editor e que é, ah, muito mais fácil do que ter que gerenciar Jason ou civilização XML. Nós tocamos na classe view e vimos que a classe poucos só exibe os dados, então faz sentido torná-lo um comportamento motor. Também pode ser um comportamento U. Y, e vimos que ele se atualiza quando os dados mudam ou também pode receber eventos do controlador. Em seguida, tocamos no próprio controlador. Vimos que só se destina a manipular os dados que ele pode lidar com a entrada, embora em um cenário multi-plataforma. Recomenda-se separar as entradas do controlador e que ele pode referenciar a exibição , embora seja preferível que a exibição assine seus eventos. E isso é algo que vamos tocar em um capítulo posterior sobre Lean Tudo que vimos que padrões de
design são apenas sugestões lá, apenas padrões religiosos. Dito isto, vimos que poderíamos criar nosso próprio padrão aqui, onde o modelo não atualiza a visão. É o controle das atualizações. A vista e o View simplesmente tirarão os dados do controlador e atualizarão a partir de eventos enviados do controle ou assim para ir mais longe. Pode subscrever a minha newsletter e receber ofertas exclusivas. Union também se juntar ao Unity Workshops Group no Facebook, e se você quiser me acompanhar no Twitter, é no Unity Coach no Facebook. A mesma coisa em que você precisa de um treinador ou Facebook que vem em último lugar. Você precisa de um treinador e na comunidade de unidade, ou como respostas collab e Connect, você vai me encontrar com AD. Você precisa de um treinador ou um quarto de amigos até a próxima vez. Obrigado por assistir
19. Refatoração de , a: neste vídeo, eu gostaria de trazer se você corrigir os scripts que terminamos com o final deste capítulo. A primeira coisa que eu queria apontar se você Dan, com o projeto final, você provavelmente já notou essas correções aqui. Mas lembre-se que eu estava usando aqui no Inspector Gooey Método A estava usando este Teoh, na verdade evitar o erro que temos quando criamos uma nova faixa no Inspetor. E, de fato, percebi que inicializar esta lista aqui no início simplesmente se livra desse erro exatamente muito mais simples. Teoh, faça assim. Outra coisa que quero que o Teoh aponte. E isso está sendo trazido à minha atenção por um dos estudantes aqui em vocês ,
bonecos, graças ao John que, verdade, na
verdade,apontou que segundos por lance e bits por segundo ou realmente trocados. Então, mesmo que nós os usássemos nos lugares certos nas vozes apropriadas que dizem que
funciona , provavelmente o significado que eles o transportador é realmente varrido. E se pensarmos nisso como bits por segundo é realmente quantas batidas em um segundo, então não é 60 dividido pelo número de bits por minuto. Mas é o número de bits por minuto dividido por 60 e dublagem diz que segundos por lance é na verdade o contrário. Se fosse o valor que foi realmente invertido, então eu simplesmente mudaria o sinal aqui, e isso seria bem simples. A coisa é que lá é apenas o nome fora,
o viável, então tudo está bem. Mas o nome dessas variáveis e de acesso são realmente enganosos. Então nós queremos renomear isso e assim para fazer isso, o que eu vou fazer aqui é usar um dos recursos que é bastante poderoso em
desenvolvido moderno que é chamado de refletor. Então eu posso clicar com o botão direito sobre isso e ir e dizer, renomear quando você faz isso em algo que é realmente privado ou que está dentro desta classe . Então, por exemplo, se eu fosse fazer isso na, uh, a instância, então eu teria isso. Eu teria uma simples renomeação porque isso não existe e não pode existir porque simplesmente porque é privado, então não pode existir em nenhum outro lugar. Em outra classe, e então eu posso simplesmente renomear isso e ele vai renomear todas as ocorrências fora do nome
dessa coisa. Mas lá, o que é um pouco diferente é que isso provavelmente é usado em outro lugar, e na verdade é. Sabemos que ele é usado na visão de faixa onde usamos aqui como segundos por lance aqui. Então o que podemos fazer aqui é eu realmente vou fechar este arquivo aqui, e o que podemos fazer aqui é simplesmente destacar isso e então simplesmente ir e dizer renomear. E quando eu faço isso, em vez de apenas renomear todos os órgãos, está dentro da final. Ele vai sustentar esta caixa de diálogo onde eu posso mudar o nome e eles são o que eu vou
fazer aqui não é se eu mudar o nome para bits por segundo que eu iria acabar com duas propriedades com o mesmo nome, e então eu não poderia mais renomeado para o outro. Então o que eu vou fazer aqui a partir de agora é simplesmente no final da pontuação para este, e eu também vou copiar isso e então eu vou dizer, OK, agora eu posso fazer isso aqui eu vou continuar, fazer renomear e então eu vou renomear esses dois segundos por batida assim. E então agora eu posso ir e renomear o outro e renomeá-lo como batidas por segundo. Bem, assim. E então ele vai renomear isso em todos os lugares no fogo, mas na verdade em todos os lugares nas soluções que encontramos na visão de pista novamente. Então lá podemos ver que eu tinha segundos por batida. Agora eu tenho bits por segundo em vez disso, e é por isso que eu fechei o arquivo antes que eu faria isso antes, porque se eu fizesse isso com o Open final, ele realmente teria feito isso. Mas então, muito forno. Você quer Thio tê-lo não tem Teoh para salvar o arquivo que ele foi alterado. Se eu tivesse feito como na verdade eu poderia fazê-lo. Apenas Teoh demo o propósito aqui se eu fizer isso aqui assim e eu renomeei isso com um par de sublinhados atrás. O que você pode ver aqui é que ele mudou este arquivo, mas ele não o salvou, então se eu nunca voltar na unidade ajudado ou muitas vezes você vai acabar com um erro porque você salva o arquivo que você modificou. Mas você não salvou todos os outros incêndios que ele é modificado automaticamente. Então e também quando Nice coisa é que você pode realmente fazer isso em qualquer arquivo. Então você não tem que fazer isso nesta multa aqui. Você também pode fazê-lo. Acho que eles estão lá. Eu posso simplesmente ir e dizer renomear e, em seguida, remover o em pontuações e, em seguida, ele vai fazer o contrário. Então este é, Ah, muito poderoso recurso que eu queria mostrar aqui neste vídeo. E mais uma vez, graças ao John, que realmente apontou
isso, o erro foi meu. Eso Agora está consertado e eu vou reduzir também os arquivos do projeto final e os pais dos outros capítulos deste treinamento também. Então, como sempre, Muito
obrigado pelo seu feedback. E obrigado por assistir