Problema com script
+2
dstaroski
maikonluis
6 participantes
Página 1 de 1
Problema com script
entao fiz uma canvas para todos os detalhes do meu personagem e tava funcionando acabei perdendo td e recomeçando mas agora nao esta funcionando. e bem simples quero apertar "e" e essa aba some aperto aparece. mas nada funciona eu so consigo desativar ela.
aqui criei a bool so pra testar na tela mas quando tava o gameobject da imagem (pq a canvas msm nao consegui por nada no mundo fazer ela via hierarc) mas ela so desativava igual
aqui criei a bool so pra testar na tela mas quando tava o gameobject da imagem (pq a canvas msm nao consegui por nada no mundo fazer ela via hierarc) mas ela so desativava igual
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Character : MonoBehaviour {
public bool characterAtiv;
// Use this for initialization
void Start () {
characterAtiv = true;
}
// Update is called once per frame
void Update () {
atv();
datv();
}
void atv () {
if (characterAtiv == false && Input.GetKeyDown (KeyCode.E))
{
characterAtiv = true;
}
}
void datv () {
if (characterAtiv == true && Input.GetKeyDown(KeyCode.E))
{
characterAtiv = false;
}
}
}
Última edição por dstaroski em Sex Jul 20, 2018 11:31 am, editado 1 vez(es) (Motivo da edição : Editado título)
maikonluis- Membro
- PONTOS : 2962
REPUTAÇÃO : 4
Idade : 34
Respeito as regras :
Re: Problema com script
Bom dia brothi! mano, primeiro que seu título "socorro ta difícil..." não é título de tópico para um fórum, o mesmo será alterado por mim. Seja objetivo e descreva parte do seu problema nos seus títulos. O problema do seu código é que se ta chamando as duas voids no update, ou seja, em quanto o jogo estiver em execução ele está sendo chamado, e por isso nem vai funcionar direito os seus inputs. Você quer ativar ou desativar alguma coisa com a tecla E, pois ficou meio difícil de entender o que você quer exatamente. Responda ai que te ajudo a consertar seu código.maikonluis escreveu:entao fiz uma canvas para todos os detalhes do meu personagem e tava funcionando acabei perdendo td e recomeçando mas agora nao esta funcionando. e bem simples quero apertar "e" e essa aba some aperto aparece. mas nada funciona eu so consigo desativar ela.
aqui criei a bool so pra testar na tela mas quando tava o gameobject da imagem (pq a canvas msm nao consegui por nada no mundo fazer ela via hierarc) mas ela so desativava igual
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Character : MonoBehaviour {
public bool characterAtiv;
// Use this for initialization
void Start () {
characterAtiv = true;
}
// Update is called once per frame
void Update () {
atv();
datv();
}
void atv () {
if (characterAtiv == false && Input.GetKeyDown (KeyCode.E))
{
characterAtiv = true;
}
}
void datv () {
if (characterAtiv == true && Input.GetKeyDown(KeyCode.E))
{
characterAtiv = false;
}
}
}
Abraço!
Re: Problema com script
desculpa , eu quero o seguinte to fazendo coisas simples de cada vez ai agora so quero fazer aquilo ,tipo quando tu ta em 1 jogo e tu aperta determinada tecla e abre e apertando de novo fecha ex inventario,menu de pausa, mas quero isso com a canvas que eu criei
maikonluis- Membro
- PONTOS : 2962
REPUTAÇÃO : 4
Idade : 34
Respeito as regras :
Re: Problema com script
bom dia, exatamente o q o ds falou ,sua bool nao funciona,sei lá as duas voids estao sendo chamada ao mesmo tempo acho q é isso, em uma void só ja é o suficiente,
um exemplo opcional ate q funciona só colocar uma linha de if checar as duas:
um exemplo opcional ate q funciona só colocar uma linha de if checar as duas:
- Código:
void Update()
{
if(!characterAtiv)
atv();
else
datv();
}
Re: Problema com script
funcionou perfeitamente com a boleana mas quando adiciono o "gameObject.SetActive(false);" ele volta a so desativarFelipeSouza11 escreveu:bom dia, exatamente o q o ds falou ,sua bool nao funciona,sei lá as duas voids estao sendo chamada ao mesmo tempo acho q é isso, em uma void só ja é o suficiente,
um exemplo opcional ate q funciona só colocar uma linha de if checar as duas:
- Código:
void Update()
{
if(!characterAtiv)
atv();
else
datv();
}
maikonluis- Membro
- PONTOS : 2962
REPUTAÇÃO : 4
Idade : 34
Respeito as regras :
Re: Problema com script
Dá uma olhada nesse código:
Abraço!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AtivaDesativa : MonoBehaviour
{
public GameObject objeto;
[SerializeField]
private bool ativa;
private void Update()
{
if(Input.GetKeyDown(KeyCode.E))
{
ativa = !ativa;
}
if(ativa) // o mesmo que == true, se por o ! na frente, é o mesmo que == false.
{
objeto.SetActive(false);
}
else
{
objeto.SetActive(true);
}
}
}
Abraço!
Re: Problema com script
maikonluis escreveu:entao fiz uma canvas para todos os detalhes do meu personagem e tava funcionando acabei perdendo td e recomeçando mas agora nao esta funcionando. e bem simples quero apertar "e" e essa aba some aperto aparece. mas nada funciona eu so consigo desativar ela.
aqui criei a bool so pra testar na tela mas quando tava o gameobject da imagem (pq a canvas msm nao consegui por nada no mundo fazer ela via hierarc) mas ela so desativava igual
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Character : MonoBehaviour {
public bool characterAtiv;
// Use this for initialization
void Start () {
characterAtiv = true;
}
// Update is called once per frame
void Update () {
atv();
datv();
}
void atv () {
if (characterAtiv == false && Input.GetKeyDown (KeyCode.E))
{
characterAtiv = true;
}
}
void datv () {
if (characterAtiv == true && Input.GetKeyDown(KeyCode.E))
{
characterAtiv = false;
}
}
}
Seu Update tá correndo e ativando e desativando o seu bool eternamente, aí se vc for querer clicar p desativar lá no unity, ele vai funcionar mas não vai dar tempo nem de vc ver, pq o Update relê o código em média 60 vezes por segundo.
Tiago95- Avançado
- PONTOS : 2629
REPUTAÇÃO : 32
Respeito as regras :
Re: Problema com script
- Código:
void Update () {
characterAtiv = Input.GetKeyDown(KeyCode.E)? !characterAtiv : characterAtiv;
}
Pronto
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Problema com script
Ué, se o script só desativa e não ativa novamente é porque o objeto tá desativado meu amigo, logo, o script não vai mais funcionar e ativar o objeto de novo, porque ele foi desativado junto do objeto.
O que você pode fazer é colocar esse script em outro objeto da cena e referenciar o objeto que quer desativar. Dessa forma, o script não vai ser desativado junto do objeto.
O que você pode fazer é colocar esse script em outro objeto da cena e referenciar o objeto que quer desativar. Dessa forma, o script não vai ser desativado junto do objeto.
Última edição por MayLeone em Sex Jul 20, 2018 2:56 pm, editado 1 vez(es)
Re: Problema com script
Mas se você colocar uma condição, só vai entrar nela se ela for verdadeira.
if (Input.GetKeyDown(KeyCode.A))
{
varBooleana=!varBooleana;// isso pode colocar //dentro de um método que vai vincular a um Button //também mas lembrando de colocar a função a baixo no //Update fora deste if
menu.gameObject.enabled=varBooleana;
}
Lembre que se vc desativar o objeto que está com este script, ele não vai funcionar mais. Então não vai conseguir ativar de novo durante o jogo por meio desse script
Tem várias formas, tem que ver como exatamente vc quer
if (Input.GetKeyDown(KeyCode.A))
{
varBooleana=!varBooleana;// isso pode colocar //dentro de um método que vai vincular a um Button //também mas lembrando de colocar a função a baixo no //Update fora deste if
menu.gameObject.enabled=varBooleana;
}
Lembre que se vc desativar o objeto que está com este script, ele não vai funcionar mais. Então não vai conseguir ativar de novo durante o jogo por meio desse script
Tem várias formas, tem que ver como exatamente vc quer
Tiago95- Avançado
- PONTOS : 2629
REPUTAÇÃO : 32
Respeito as regras :
Re: Problema com script
Ou fazer direto, sem bools:
- Código:
if (Input.GetKeyDown(KeyCode.E))
menu.gameObject.SetActive(!menu.gameObject.enabled);
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Tópicos semelhantes
» Problema com um script de som
» Problema com Script
» Problema com script
» problema com Script
» Problema com script
» Problema com Script
» Problema com script
» problema com Script
» Problema com script
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos