Coroutine ou Invoke - qual tem melhor desempenho
3 participantes
Página 1 de 1
Coroutine ou Invoke - qual tem melhor desempenho
boa tarde,
por exemplo, uso IEnumerator e Invoke para fazer uma mesma coisa:
ou:
em termos de desempenho do jogo e do pc, ou seja, o jogo não ficar lento, não pesar o processamento e memória, qual é o melhor método a ser usado quando se quer fazer alguma coisa após certo tempo decorrido?
não sei se já no forum resposta sobre essa mesma questão, se nao tiver vai ajudar mais alguém que tem essa duvida!
por exemplo, uso IEnumerator e Invoke para fazer uma mesma coisa:
- Código:
public bool variavel;
void Start() {
StartCoroutine(TornaVerdadeira());
}
IEnumerator TornaVerdadeira() {
yield return new WaitForSeconds(2.0f);
variavel = true;
}
ou:
- Código:
public bool variavel;
void Start() {
Invoke("TornaVerdadeira", 2.0f);
}
void TornaVerdadeira() {
variavel = true;
}
em termos de desempenho do jogo e do pc, ou seja, o jogo não ficar lento, não pesar o processamento e memória, qual é o melhor método a ser usado quando se quer fazer alguma coisa após certo tempo decorrido?
não sei se já no forum resposta sobre essa mesma questão, se nao tiver vai ajudar mais alguém que tem essa duvida!
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Coroutine ou Invoke - qual tem melhor desempenho
Acho que Invoke só chama a void() uma vez, enquanto a Rotina(Coroutine) é chamada enquanto você não usar o comando StopCoroutine()
Re: Coroutine ou Invoke - qual tem melhor desempenho
DuViDoSo escreveu:Acho que Invoke só chama a void() uma vez, enquanto a Rotina(Coroutine) é chamada enquanto você não usar o comando StopCoroutine()
A coroutina do jeito que está acima só chama uma vez, ela faz o comando após 2s e pronto, não se repete mais.
A não ser que vc coloque mais códigos para fazer com que algo se repita a cada intervalo de tempo, tipo isso:
- Código:
public float tempo = 10f;
void Start() {
StartCoroutine("ContagemRegressiva");
}
IEnumerator ContagemRegressiva() {
yield return new WaitForSeconds(1.0f);
tempo--;
if (tempo > 0) {
StartCoroutine("ContagemRegressiva");
}
}
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Coroutine ou Invoke - qual tem melhor desempenho
Na verdade a semelhança está mais entre InvokeRepeating e Coroutine do que o Invoke, visto que o último deve ser chamado, enquanto o InvokeRepeating é chamado num ciclo fixo de tempo.
A diferença entre o Repeating e o Coroutine é que o Repeating como eu disse, é chamado num tempo fixo (à cada 3 segundos, por exemplo), já o Coroutine você pode manipular/alterar esse tempo de chamada in game, por exemplo, chamar a corrotina em 7 segundos, depois diminuir para 4, aumentar pra 10, enfim, é uma chamada variável/manipulável.
Em termos de performance, é praticamente imperceptível o uso de ambos.
A diferença entre o Repeating e o Coroutine é que o Repeating como eu disse, é chamado num tempo fixo (à cada 3 segundos, por exemplo), já o Coroutine você pode manipular/alterar esse tempo de chamada in game, por exemplo, chamar a corrotina em 7 segundos, depois diminuir para 4, aumentar pra 10, enfim, é uma chamada variável/manipulável.
Em termos de performance, é praticamente imperceptível o uso de ambos.
Re: Coroutine ou Invoke - qual tem melhor desempenho
MayLeone obrigado, boa explicação!
Pelo que o Duvidoso disse acima, eu entendi que ele quis dizer que a Coroutine se repete automaticamente num ciclo enquanto eu não der o Stop, como se fosse o mesmo que o Repeating faz.
Conforme vc disse que a Coroutine deve ser chamada, quer dizer que ela não fica se repetindo automaticamente, a não ser que eu passe um comando para ela ser chamada novamente, isso mesmo?
Em relação à performance, então não há diferença entre o uso dos dois, isso que eu queria saber!
Pelo que o Duvidoso disse acima, eu entendi que ele quis dizer que a Coroutine se repete automaticamente num ciclo enquanto eu não der o Stop, como se fosse o mesmo que o Repeating faz.
Conforme vc disse que a Coroutine deve ser chamada, quer dizer que ela não fica se repetindo automaticamente, a não ser que eu passe um comando para ela ser chamada novamente, isso mesmo?
Em relação à performance, então não há diferença entre o uso dos dois, isso que eu queria saber!
Flávio- MembroAvançado
- PONTOS : 2831
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Tópicos semelhantes
» Qual vcs acham melhor em questao de desempenho?
» Qual a diferença principal entre o VisuaStudio e o MonoDevelop?E qual é o melhor?
» Qual o melhor pra vcs ?
» QUAL O MELHOR MATERIAL DE COLLIDER?
» Qual o melhor formato de Textura?
» Qual a diferença principal entre o VisuaStudio e o MonoDevelop?E qual é o melhor?
» Qual o melhor pra vcs ?
» QUAL O MELHOR MATERIAL DE COLLIDER?
» Qual o melhor formato de Textura?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos