static void Main(string[] args) { //A classe animal é uma abstração de algo do mundo real , ou seja , a classe abstrata consegue receber qualquer tipo de animal de estimação , porem se eu tentar por exemplo associar um animal selvagem // não estaria de acordo com o a realidade AnimalDomestico animal = new Gato("Anakin");// Associando a classe concreta ou seja a implementação de um determinado animal , observa-se que não é possivel instanciar um lobo pois ele é um animal selvagem animal.Beber("Água"); animal = new Cachorro("Kako");// Novamente associando a classe concreta ou seja a implementação de um determinado animal animal.Beber("Agua"); /// Quando se instancia uma interface você garante o uso somente de sua implementação , cachorro e gato tem comportamento distintos ,porem tambem tem comportamentos semelhantes /// assim independente da instancia a ação sera executada IComportamentoPadrao animalComportamentoPadrao = new Cachorro("Nina"); animalComportamentoPadrao.Brincar(); // Cachorros sabem brincar //Mudando a instancia de animalComportamentoPadrao para ser um gato inicialmente erá um cachorro animalComportamentoPadrao = new Gato("Apolo"); animalComportamentoPadrao.Brincar(); // Gatos assim como cachorros sabem brincar. IComportamento comportamentoGenerico = animalComportamentoPadrao; /// interface em de nivel mais generico possivel como a interface comportamento não tem nada implementado para usar os metodos de classes derivadas seria necessario uma conversão; ((IComportamentoPadrao)comportamentoGenerico).Brincar(); comportamentoGenerico = animalComportamentoPadrao; //((IComportamentoCanino)comportamentoGenerico).Latir(); /// essa linha soltaria um erro pois na é a instancia de um gato e o gato não late AnimalDomestico animalA = new Cachorro("Kako");//Valido //animalA = new Lobo(); invalido pois animal selvagem não é um animal domestico Animal AnimalGenerico = new Cachorro("KaKo"); AnimalGenerico = new Gato("Apolo"); AnimalGenerico = new Onca(); AnimalGenerico = new Lobo(); //Resumo //Quanto mais generico for sua abstração menos metodos estaram disponiveis }
void Awake() { barraCooldown = GameObject.Find("Jabuti Cooldown").GetComponent <Image> (); player = (PlayerController)GetComponent(typeof(PlayerController)); oncaScript = (Onca)GetComponent(typeof(Onca)); shieldAtivo = false; canTurtle = true; turtleTime = 8; }
void Awake() //Acontece quando o prefab é "acordado" { podeExecutar = true; vidas = 5; almas = 0; aguiaScript = (Aguia)GetComponent(typeof(Aguia)); oncaScript = (Onca)GetComponent(typeof(Onca)); tartarugaScript = (Tartaruga)GetComponent(typeof(Tartaruga)); rb = GetComponent <Rigidbody2D>(); //Encontra o componente Rigidbody do jogador. an = GetComponentInChildren <Animator>(); cam = Camera.main.GetComponent <CamFollow>(); canMove = true; moveBlock = false; canShoot = true; facingRight = true; force = 1500; groundCheckSize = new Vector2(0.4f, 0.3f); passosEv = FMODUnity.RuntimeManager.CreateInstance(somPassos); passosEv.getParameter("Andando", out andandoParam); passosEv.getParameter("Terreno", out terrenoParam); passosEv.start(); Instantiate(gm); StartCoroutine(gm.habilidadesIniciais()); Time.timeScale = 1; hitPlayed = true; vulneravel = true; }
void Awake() { Instance = this; }