Observables: Asynchronous Data Streams | Learning UniRx [2]

Na parte 1 de Learning UniRx, aprendemos que programação reativa é programar com fluxos de dados. No UniRx, os fluxos de dados são conhecidos como Observables. Neste vídeo, veremos mais de perto o que são Observables, como eles são implementados e alguns dos Observables específicos do Unity fornecidos pelo UniRx. Um Observable representa uma sequência de eventos. Cada evento resulta no Observable emitindo um valor.
Observadores se inscrevem em Observables e reagem aos valores que eles emitem.
Todos os tipos de Extensões Reativas devem seguir um contrato que define como os Observables devem ser implementados.

O contrato é o seguinte. Um Observable deve se comunicar com seus observadores por meio das seguintes notificações. OnNext diz ao observador que um item foi emitido. OnCompleted informa ao observador que o Observable foi concluído com sucesso e não emitirá mais valores. E OnError informa ao observador que o Observable foi encerrado devido a um erro especificado e não emitirá mais valores. Além disso, o contrato estabelece que um observador se comunicará com um Observable por meio das seguintes notificações. Subscribe informa ao Observable que o observador está pronto para receber notificações.
E Unsubscribe informa ao Observable que o observador não deseja mais receber notificações.

Este Observable personalizado, criado usando o método estático Create, nos dá uma ideia melhor de como essas notificações são chamadas sob o capô. Create usa um método delegado que fornece acesso ao observador. É aqui que você pode chamar OnNext, OnCompleted e OnError.
No caso do nosso exemplo, o delegado percorre uma matriz de números, emitindo cada valor e aguardando um segundo. Em seguida, ele chama OnCompleted para informar ao observador que o Observable foi concluído com êxito e não emitirá mais valores. O observador que está inscrito neste Observable personalizado simplesmente grava os valores emitidos no console. Conforme você aprende mais sobre Observables e seus operadores, você vai querer se familiarizar mais com diagramas de mármore. Os diagramas de mármore ajudam a isualizar o que os Observables estão realmente emitindo. Este é um diagrama de mármore do Observable personalizado do exemplo anterior. Os círculos, ou berlindes, representam os valores que o seu Observable emite.
A linha em que eles se sentam representa o fluxo do tempo. Lembre-se, esses valores são emitidos com um segundo de diferença um do outro.

A linha no final do diagrama de mármore representa a conclusão do Observável. Agora, o exemplo não continha um erro, mas se tivesse , seria representado por um X, assim.
Em breve falarei sobre operadores e como eles filtram, transformam e combinam Observables.
Tudo isso também pode ser visualizado por diagramas de mármore . Pegue o operador Select
Os valores emitidos fluem para esta caixa, que representa a transformação.
Em seguida, eles fluem para um novo Observable que é visualizado por seu próprio diagrama de mármore.
Os diagramas do Marble são ferramentas poderosas que podem ajudá-lo a entender e entender como os operadores mais complicados estão afetando seus Observables. Até agora falamos sobre o que são Observables e como podemos criar os nossos.
Mas, na maioria das vezes, você geralmente deseja confiar nos Observables fornecidos pelo UniRx. Esses Observables integrados , conhecidos como Triggers, são específicos do Unity, transformando eventos MonoBehaviour , como Update e OnCollisionEnter, em fluxos de dados nos quais você pode se inscrever.

Este exemplo simples mostra um MonoBehaviour que registra o nome de cada gameObject com o qual colide.
Primeiro, ele precisa importar UniRx.Triggers Em seguida, ele se inscreve em OnCollisionEnterAsObservable em seu método Start, onde chama Debug.Log, passando o nome do gameObject da colisão. Esta é a convenção de nomenclatura usada para todos os eventos MonoBehaviour, com o nome do evento seguido de “AsObservable”. De atualizações a colisões e eventos de mouse, o UniRx vem com suporte para todos os eventos MonoBehaviour mais usados. Há também algumas outras gems específicas do Unity, como Propriedades reativas, que abordarei em outro vídeo. No próximo vídeo, falaremos sobre os diferentes tipos de operadores disponíveis no UniRx. Os operadores permitem que você filtre, transforme e combine seus Observables, dando a você um controle mais refinado sobre como você compõe seu código assíncrono.
Se você gostou deste vídeo, por favor deixe um like e um comentário me dizendo o que você achou.

E para mais tutoriais do Unity como
este, inscreva-se com as notificações ativadas. E se você gostaria
de apoiar a criação de conteúdo como este, considere se tornar um patrono
na página Infallible Code Patreon..

Texto inspirado em publicação no YouTube.

Quer Saber Muito Mais? Venha para a MIND21 Educação

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.