[Unity 5] Dúvida com booleana temporária.
5 participantes
Página 1 de 1
[Unity 5] Dúvida com booleana temporária.
Então, quero fazer com que uma série de eventos ocorram quando eu clicar com o botão esquerdo do mouse, porém no
ele só verifica o primeiro frame, no
só o frame em que o botão foi soltado e o
verifica enquanto o botão está sendo pressionado, e como vai acontecer uma série de eventos, não daria pra usar só um frame, e nem ficar segurando o botão do mouse, daí eu criei uma booleana que é ativada quando o botão do mouse é apertado, porém, percebi que seria melhor criar uma booleana temporária, porque daí era só eu criar uma em cada ocasião, já que eu precisaria várias vezes do comando de Input, o problema é que eu preciso declarar o valor da booleana, e como eu faço isso na void Update ?
exemplo:
- Código:
if(Input.GetMouseButtonDown(0)){}
ele só verifica o primeiro frame, no
- Código:
if(Input.GetMouseButtonUp(0)){}
só o frame em que o botão foi soltado e o
- Código:
if(Input.GetMouseButton(0)){}
verifica enquanto o botão está sendo pressionado, e como vai acontecer uma série de eventos, não daria pra usar só um frame, e nem ficar segurando o botão do mouse, daí eu criei uma booleana que é ativada quando o botão do mouse é apertado, porém, percebi que seria melhor criar uma booleana temporária, porque daí era só eu criar uma em cada ocasião, já que eu precisaria várias vezes do comando de Input, o problema é que eu preciso declarar o valor da booleana, e como eu faço isso na void Update ?
exemplo:
- Código:
void Update(){
if(Input.GetMouseButtonDown(0)){
bool x = false;
x = true;
}
}
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Dúvida com booleana temporária.
Dentro do Update ele vai sempre setar a variavel bool pra false ou true a cada frame, então toma cuidado com bool dentro de Update. Posta o script inteiro pra ver melhor.
Re: [Unity 5] Dúvida com booleana temporária.
Ola, precisaria de mais informações para poder dar uma opinião melhor. Mas pelo que entendi tu quer disparar uma sequencia de ações dado um evento. Eu usaria um eventManager, onde teria um delegate, no start deste script onde você tem o update eu adicionaria as acoes ao delegate, e quando pressionar o mouse chama o delagate.ScorpionG4mer escreveu:Então, quero fazer com que uma série de eventos ocorram quando eu clicar com o botão esquerdo do mouse, porém no
- Código:
if(Input.GetMouseButtonDown(0)){}
ele só verifica o primeiro frame, no
- Código:
if(Input.GetMouseButtonUp(0)){}
só o frame em que o botão foi soltado e o
- Código:
if(Input.GetMouseButton(0)){}
verifica enquanto o botão está sendo pressionado, e como vai acontecer uma série de eventos, não daria pra usar só um frame, e nem ficar segurando o botão do mouse, daí eu criei uma booleana que é ativada quando o botão do mouse é apertado, porém, percebi que seria melhor criar uma booleana temporária, porque daí era só eu criar uma em cada ocasião, já que eu precisaria várias vezes do comando de Input, o problema é que eu preciso declarar o valor da booleana, e como eu faço isso na void Update ?
exemplo:Só que seu eu fizer dessa maneira a variável sempre será false, pois está na void Update.
- Código:
void Update(){
if(Input.GetMouseButtonDown(0)){
bool x = false;
x = true;
}
}
Com um pouco de tempo posso ate criar um exemplo pra você (na madruga).
Altamir- Iniciante
- PONTOS : 3065
REPUTAÇÃO : 10
Idade : 40
Áreas de atuação : Programação, C# and PHP
Respeito as regras :
Re: [Unity 5] Dúvida com booleana temporária.
Acho que isso vai servir =)Altamir escreveu:Ola, precisaria de mais informações para poder dar uma opinião melhor. Mas pelo que entendi tu quer disparar uma sequencia de ações dado um evento. Eu usaria um eventManager, onde teria um delegate, no start deste script onde você tem o update eu adicionaria as acoes ao delegate, e quando pressionar o mouse chama o delagate.ScorpionG4mer escreveu:Então, quero fazer com que uma série de eventos ocorram quando eu clicar com o botão esquerdo do mouse, porém no
- Código:
if(Input.GetMouseButtonDown(0)){}
ele só verifica o primeiro frame, no
- Código:
if(Input.GetMouseButtonUp(0)){}
só o frame em que o botão foi soltado e o
- Código:
if(Input.GetMouseButton(0)){}
verifica enquanto o botão está sendo pressionado, e como vai acontecer uma série de eventos, não daria pra usar só um frame, e nem ficar segurando o botão do mouse, daí eu criei uma booleana que é ativada quando o botão do mouse é apertado, porém, percebi que seria melhor criar uma booleana temporária, porque daí era só eu criar uma em cada ocasião, já que eu precisaria várias vezes do comando de Input, o problema é que eu preciso declarar o valor da booleana, e como eu faço isso na void Update ?
exemplo:Só que seu eu fizer dessa maneira a variável sempre será false, pois está na void Update.
- Código:
void Update(){
if(Input.GetMouseButtonDown(0)){
bool x = false;
x = true;
}
}
Com um pouco de tempo posso ate criar um exemplo pra você (na madruga).
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Dúvida com booleana temporária.
Mas é esse todo o meu problema amigo, eu sei que sempre será true ou false, o que eu queria saber é como declarar ela na void Update sem esse problema.dimmuo escreveu:Dentro do Update ele vai sempre setar a variavel bool pra false ou true a cada frame, então toma cuidado com bool dentro de Update. Posta o script inteiro pra ver melhor.
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Dúvida com booleana temporária.
Não entendi muito o que voce quer, mas talvez esse exemplo simples aki possa ser util:
Apenas cri esses 2 script e adicione na sua cena pra testar se e´isso que deseja, se for, quando voce quiser executar algum metodo é so seguir o exemplo do ClickTest no metodo Awake.
- Código:
using UnityEngine;
using System.Collections;
public class ClickEventBehaviour : MonoBehaviour
{
public delegate void ClickEvent ();
public static event ClickEvent onClickDown;
public static event ClickEvent onClickUp;
private bool lastValue = false;
void Update ()
{
bool clickDown = Input.GetMouseButton (0);
if (clickDown == lastValue)
return;
if (clickDown) {
if (onClickDown != null)
onClickDown ();
} else {
if (onClickUp != null)
onClickUp ();
}
lastValue = clickDown;
}
}
- Código:
using UnityEngine;
using System.Collections;
public class ClickTest : MonoBehaviour {
private int releaseTimes = 0;
private int clickTimes = 0;
void Awake(){
ClickEventBehaviour.onClickDown += onClickDown;
ClickEventBehaviour.onClickUp += onClickUp;
}
void onClickUp ()
{
releaseTimes++;
print (string.Concat("Voce soltou o mouse pela: ",releaseTimes," Vez!"));
}
void onClickDown ()
{
clickTimes++;
print (string.Concat("Voce apertou o mouse pela: ",clickTimes," Vez!"));
}
}
Apenas cri esses 2 script e adicione na sua cena pra testar se e´isso que deseja, se for, quando voce quiser executar algum metodo é so seguir o exemplo do ClickTest no metodo Awake.
Re: [Unity 5] Dúvida com booleana temporária.
Ou porque tu não declara a "bool" fora da update?
que ai quando segura o botão do mouse coloca ela como true (variável = true)]
e no final dela depois da sua série de eventos coloque-a como false (variável = false)
que ai quando segura o botão do mouse coloca ela como true (variável = true)]
e no final dela depois da sua série de eventos coloque-a como false (variável = false)
Tópicos semelhantes
» Eu estou com dúvida de como instalar a unity com Unity Hub
» Salvar variável temporária com PlayerPrefs!?
» [DUVIDA] UNITY 5
» Duvida na Unity 5.3.1
» Unity 5 Duvida
» Salvar variável temporária com PlayerPrefs!?
» [DUVIDA] UNITY 5
» Duvida na Unity 5.3.1
» Unity 5 Duvida
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos