private void Awake()
        {
            // Coletar os scripts com base na interface que eles implementam,
            // ao invés do script diretamente, permite-nos anexar scripts
            // diferentes ao objeto desde que cumpram as funções definidas
            // na interface.
            Hud       = GetComponent <IHud>();
            Character = GetComponent <ICharacter>();
            Movement  = GetComponent <IMovement>();

            // Depois que temos tudo em mãos, passamos o balde para todos
            // os scripts, isso permite que eles tenham acesso uns aos
            // outros, sem depender dos detalhes de implementação dos mesmos.
            Hud.CollectDependencies(this);
            Character.CollectDependencies(this);
            Movement.CollectDependencies(this);
        }