Chamar void à cada Frames/S
4 participantes
Página 1 de 1
Chamar void à cada Frames/S
Olá, gostaria de saber como eu faço para que um tal void seja chamada à cada 60 Fps, por exemplo, ou 30..
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Chamar void à cada Frames/S
Você pode utilizar a void FixedUpdate para fazer algum comando em tempo fixo, pois essa void é chamada a 50 Hz... não é os 60 que você quer, mas talvez já sirva
Re: Chamar void à cada Frames/S
Não Marcos, é que eu queria gerenciar à quantas vezes ela se repetiriaMarcosSchultz escreveu:Você pode utilizar a void FixedUpdate para fazer algum comando em tempo fixo, pois essa void é chamada a 50 Hz... não é os 60 que você quer, mas talvez já sirva
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Chamar void à cada Frames/S
UP no tópico ._.Souris escreveu:Não Marcos, é que eu queria gerenciar à quantas vezes ela se repetiriaMarcosSchultz escreveu:Você pode utilizar a void FixedUpdate para fazer algum comando em tempo fixo, pois essa void é chamada a 50 Hz... não é os 60 que você quer, mas talvez já sirva
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Chamar void à cada Frames/S
Voce pode tentar usar coroutines ou InvokeRepeating, exemplo usando coroutine:
Obs: não é legal usar coroutine no update!
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
[SerializeField]private int numeroDeRepeticao = 30;
void Update()
{
if (Input.GetMouseButtonDown (0))
StartCoroutine (MetodoRepetitivo ());
}
IEnumerator MetodoRepetitivo()
{
float t = 1f / numeroDeRepeticao;
for(var i=0; i<numeroDeRepeticao; i++)
{
yield return new WaitForSeconds (t);
print ("Metodo Chamado!");
}
}
}
Obs: não é legal usar coroutine no update!
Re: Chamar void à cada Frames/S
Desculpa amigo, mas não é isso que eu quero.Manawydan escreveu:Voce pode tentar usar coroutines ou InvokeRepeating, exemplo usando coroutine:
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
[SerializeField]private int numeroDeRepeticao = 30;
void Update()
{
if (Input.GetMouseButtonDown (0))
StartCoroutine (MetodoRepetitivo ());
}
IEnumerator MetodoRepetitivo()
{
float t = 1f / numeroDeRepeticao;
for(var i=0; i<numeroDeRepeticao; i++)
{
yield return new WaitForSeconds (t);
print ("Metodo Chamado!");
}
}
}
Obs: não é legal usar coroutine no update!
Eu precisava limitar os Frames da void Update num Script Any Help?
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Chamar void à cada Frames/S
30 frames = 1 segundo
1 frame = +- 0.03 segundos
vc poderia usar isso como uma gambiarra e chamar a ação q vc quer a cada 0.03 segundos, tá longe de ser a melhor opção, mas acho q serve
1 frame = +- 0.03 segundos
vc poderia usar isso como uma gambiarra e chamar a ação q vc quer a cada 0.03 segundos, tá longe de ser a melhor opção, mas acho q serve
thiagograssi- MembroAvançado
- PONTOS : 3373
REPUTAÇÃO : 43
Idade : 20
Áreas de atuação : Photoshop;
SketchUp;
C#(Learning);
Respeito as regras :
Re: Chamar void à cada Frames/S
Então cara depende muito do que voce quer fazer, uma forma que voce poderia fazer seria o seguinte:
Criar um script que simula um update usando coroutine
Criar um script que simula um update usando coroutine
- Código:
using UnityEngine;
using System.Collections;
public class CustomUpdateBehaviour : MonoBehaviour
{
[SerializeField]private float frameNumber = 20f;
private float deltaT = 0;
void Awake(){
deltaT = 1f / frameNumber;
StartCoroutine (CustomUpdateCall ());
}
private IEnumerator CustomUpdateCall()
{
while (true)
{
yield return CustomUpdate ();
}
yield return null;
}
public virtual IEnumerator CustomUpdate()
{
yield return new WaitForSeconds (deltaT);
}
}
- Código:
using UnityEngine;
using System.Collections;
public class CubeMoveUpdate : CustomUpdateBehaviour {
// METOODO QUE VAI SER EXECUTADO COM BASE NOS FRAMES SELECIONADOS
public override IEnumerator CustomUpdate ()
{
// MOVER O CUBO PRA CIMA
transform.position += Vector3.up;
// ESPERAR O TEMPO PARA PROXIMA EXECUÇÃO
return base.CustomUpdate ();
}
}
Re: Chamar void à cada Frames/S
Não sei se rotina é uma boa, pois ela depende do timer da Unity também, e da um efeito errado... tome este código por exemplo:
A teoria diz que ele deveria trabalhar a 30 ciclos na rotina, e quando o tempo fosse igual a 1, a variável número deveria ser igual a 30, mas não é isso que acontece.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RCC : MonoBehaviour {
public float tempo, numero;
void Start(){
StartCoroutine ("RotinaControlada");
}
IEnumerator RotinaControlada (){
numero++;
yield return new WaitForSeconds (0.033333f);
StartCoroutine ("RotinaControlada");
}
void Update(){
tempo += Time.deltaTime;
}
}
A teoria diz que ele deveria trabalhar a 30 ciclos na rotina, e quando o tempo fosse igual a 1, a variável número deveria ser igual a 30, mas não é isso que acontece.
Tópicos semelhantes
» como eu consigo chamar uma void pelo comando Input.GetKey?
» como chamar void do objeto em que o RayCast bateu?
» dúvida com void Start () ou void Update? qual usar !!! #HELP
» Como posso chamar uma propaganda a cada 5 vezez que o player morrer (RESOLVIDO)
» Walk com frames
» como chamar void do objeto em que o RayCast bateu?
» dúvida com void Start () ou void Update? qual usar !!! #HELP
» Como posso chamar uma propaganda a cada 5 vezez que o player morrer (RESOLVIDO)
» Walk com frames
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos