Bom diaHoje eu gostaria de falar brevemente sobre o uso de eventos para se livrar do lixo e fornecer funcionalidades complexas e dinĂąmicas ao cĂłdigo. Note-se que este artigo se concentra mais em iniciantes que desejam aprender mais sobre sistemas de eventos.
Analisaremos toda essa questĂŁo usando o exemplo de um sistema de controle de som. Este sistema nos permitirĂĄ ativar / desativar mĂșsicas e sons nas configuraçÔes do jogo.
Antes de criarmos uma classe gerenciadora que gerenciarĂĄ as configuraçÔes de som e mĂșsica, criaremos uma classe serializĂĄvel simples. SerĂĄ usado como um modelo de dados para salvar em JSON.
using System.Collections; using System.Collections.Generic; using UnityEngine;
Agora vocĂȘ pode começar a escrever a classe de gerente. Vamos instalĂĄ-lo na primeira cena. Este gerente serĂĄ um objeto global e nĂŁo serĂĄ excluĂdo ao passar de uma cena para outra.
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO;
Agora que o gerente estĂĄ pronto, vocĂȘ pode criar um objeto vazio em sua cena inicial e nomeĂĄ-lo, por exemplo,
"_AUDIO_MANAGER" e adicionar nossa classe de gerente a ele. VocĂȘ pode fazer isso simplesmente chamando o menu adicionar componente no objeto e selecionando
âGame Managersâ => âAudio Managerâ .
Depois disso, precisamos escrever um componente que encaixaremos em cada objeto com o AudioSource.
using System.Collections; using System.Collections.Generic; using UnityEngine;
Desta forma, podemos controlar os sons / mĂșsicas no jogo. Este exemplo nĂŁo diz de forma alguma como fazĂȘ-lo corretamente, mas apenas demonstra a operação do sistema de eventos e ouvintes no Unity3D.
E, finalmente, quero falar sobre o que acabamos de usar. No exemplo abaixo, o delegado a partir do qual o ouvinte foi criado foi declarado:
public delegate void AudioSettingsChanged(); public event AudioSettingsChanged OnAudioSettingsChanged;
VocĂȘ pode definir o desempenho do ouvinte sob certas condiçÔes e se apegar a eles certos mĂ©todos que serĂŁo executados quando essas condiçÔes forem alcançadas.
E com a ajuda de delegados, com base nos quais criamos um ouvinte, vocĂȘ pode criar funçÔes de retorno de chamada. Isso pode ser especialmente Ăștil para mĂ©todos assĂncronos (por exemplo, ao enviar solicitaçÔes POST assĂncronas).
Espero que vocĂȘ ache minha pouca experiĂȘncia Ăștil nesse assunto e possa aplicar este exemplo aos seus projetos. TambĂ©m ficarei feliz em responder Ă s suas perguntas (se alguĂ©m nĂŁo entender alguma coisa).