[RESOLVIDO] Problema com script básico
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Problema com script básico
Opa estou com um problema que é bem simples, mas infelizmente não estou conseguindo resolver. É simples, quando clico no botão para evoluir ele deveria alterar o level da farm e assim mudar a produção, o problema é que parece que está permanecendo os dois leveis no playerprefs.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class farm : MonoBehaviour
{
public float farmcenouras, cenourasquantidade;
private float heldTime = 0.0f;
public GameObject panelfarm;
public GameObject farmcenourass;
public Text paneltextfarm, paneltextfarm2, cenourassss;
public Button recolher, evoluir, x;
void Awake()
{
PlayerPrefs.SetFloat("CenourasFarm", (PlayerPrefs.GetFloat("CenourasFarm") + 1));
farmcenouras = PlayerPrefs.GetFloat("CenourasFarm", 0);
}
void Start()
{
recolher.onClick.AddListener(recolherb);
evoluir.onClick.AddListener(evoluirb);
x.onClick.AddListener(xb);
}
void recolherb()
{
PlayerPrefs.SetFloat("Cenouras", (PlayerPrefs.GetFloat("Cenouras") + PlayerPrefs.GetFloat("CenourasFarm")));
farmcenouras = 0f;
}
void evoluirb()
{
if((PlayerPrefs.GetInt("LevelCenourasFarm") == 1) && cenourasquantidade >= 100)
{
PlayerPrefs.SetFloat("Cenouras", (PlayerPrefs.GetFloat("Cenouras") - 100));
PlayerPrefs.SetInt("LevelCenourasFarm", 2);
}
}
void xb()
{
panelfarm.gameObject.SetActive(false);
}
void Update()
{
cenourasquantidade = PlayerPrefs.GetFloat("Cenouras");
if(Input.GetMouseButtonDown(0))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit, 100.0f))
{
if(hit.transform.gameObject == farmcenourass)
{
panelfarm.gameObject.SetActive(true);
}
}
}
if ((PlayerPrefs.GetInt("LevelCenourasFarm") == 0));
{
PlayerPrefs.SetInt("LevelCenourasFarm", 1);
}
if ((PlayerPrefs.GetInt("LevelCenourasFarm") == 1));
{
paneltextfarm2.text = "100 CENOURAS PARA EVOLUIR PARA O NÍVEL 2";
paneltextfarm.text = "Uma simples fazenda de cenouras PRODUÇÃO: 1 POR SEGUNDO";
heldTime += Time.deltaTime;
farmcenouras += (int)heldTime;
heldTime -= (int)heldTime;
cenourassss.text = farmcenouras.ToString();
PlayerPrefs.SetFloat("CenourasFarm", farmcenouras);
}
if ((PlayerPrefs.GetInt("LevelCenourasFarm") == 2));
{
paneltextfarm2.text = "1000 CENOURAS PARA EVOLUIR PARA O NÍVEL 3";
paneltextfarm.text = "Uma simples fazenda de cenouras PRODUÇÃO: 3 POR SEGUNDO";
heldTime += Time.deltaTime;
farmcenouras += (int)heldTime * 2;
heldTime -= (int)heldTime;
cenourassss.text = farmcenouras.ToString();
PlayerPrefs.SetFloat("CenourasFarm", farmcenouras);
}
}
}
yurinogueira- Membro
- PONTOS : 2494
REPUTAÇÃO : 11
Respeito as regras :
Re: [RESOLVIDO] Problema com script básico
Consegui gente! CONCERTEI, acho que o problema era que eu precisava dormir kkk, eu só usei mais () do que deveria.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class farm : MonoBehaviour
{
public float farmcenouras;
private float heldTime = 0.0f;
public GameObject panelfarm;
public GameObject farmcenourass;
public Text paneltextfarm, paneltextfarm2, cenourassss;
public Button recolher, evoluir, x;
void Awake()
{
PlayerPrefs.SetFloat("CenourasFarm", (PlayerPrefs.GetFloat("CenourasFarm") + 1));
farmcenouras = PlayerPrefs.GetFloat("CenourasFarm", 0);
}
void Start()
{
recolher.onClick.AddListener(recolherb);
evoluir.onClick.AddListener(evoluirb);
x.onClick.AddListener(xb);
}
void recolherb()
{
PlayerPrefs.SetFloat("Cenouras", (PlayerPrefs.GetFloat("Cenouras") + PlayerPrefs.GetFloat("CenourasFarm")));
farmcenouras = 0f;
}
void evoluirb()
{
if(PlayerPrefs.GetFloat("LevelFarmCenouras") == 0)
{
if(PlayerPrefs.GetFloat("Cenouras") >= 0)
{
PlayerPrefs.SetFloat("Cenouras", 0);
PlayerPrefs.SetFloat("LevelFarmCenouras", 1);
}
}
if(PlayerPrefs.GetFloat("LevelFarmCenouras") == 1)
{
if(PlayerPrefs.GetFloat("Cenouras") >= 100)
{
PlayerPrefs.SetFloat("Cenouras", (PlayerPrefs.GetFloat("Cenouras") - 100));
PlayerPrefs.SetFloat("LevelFarmCenouras", 2);
}
}
}
void xb()
{
panelfarm.gameObject.SetActive(false);
}
void Update()
{
if(Input.GetMouseButtonDown(0))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit, 100.0f))
{
if(hit.transform.gameObject == farmcenourass)
{
panelfarm.gameObject.SetActive(true);
}
}
}
if (PlayerPrefs.GetFloat("LevelFarmCenouras") == 0)
{
paneltextfarm2.text = "Olá! Bem vindo a sua fazenda de cenouras, clique em evoluir para começar a produzir";
paneltextfarm.text = "Uma fazenda bem ruinzinha :( PRODUÇÃO: 0 POR SEGUNDO";
cenourassss.text = farmcenouras.ToString();
}
if (PlayerPrefs.GetFloat("LevelFarmCenouras") == 1)
{
paneltextfarm2.text = "100 CENOURAS PARA EVOLUIR PARA O NÍVEL 2";
paneltextfarm.text = "Uma simples fazenda de cenouras :) PRODUÇÃO: 1 POR SEGUNDO";
heldTime += Time.deltaTime;
farmcenouras += (int)heldTime;
heldTime -= (int)heldTime;
cenourassss.text = farmcenouras.ToString();
PlayerPrefs.SetFloat("CenourasFarm", farmcenouras);
}
if (PlayerPrefs.GetFloat("LevelFarmCenouras") == 2)
{
paneltextfarm2.text = "1000 CENOURAS PARA EVOLUIR PARA O NÍVEL 3";
paneltextfarm.text = "Uma fazenda de cenouras mediana :) PRODUÇÃO: 3 POR SEGUNDO";
heldTime += Time.deltaTime;
farmcenouras += (int)heldTime * 2;
heldTime -= (int)heldTime;
cenourassss.text = farmcenouras.ToString();
PlayerPrefs.SetFloat("CenourasFarm", farmcenouras);
}
}
}
yurinogueira- Membro
- PONTOS : 2494
REPUTAÇÃO : 11
Respeito as regras :
Re: [RESOLVIDO] Problema com script básico
Se for efetivar comparação entre os códigos, o problema é que na função Update os If's tem um ponto e vírgula a sua frente, o que impede a interligação do bloco de código com a condição:
Os parênteses não tem influência, alias é até uma métrica aconselhada pela Microsoft na documentação do C# separar em If as diversas condições por parênteses:
- Código:
if (true); // <= Olha o seu inimigo aqui
{
// Código inacessível
}
Os parênteses não tem influência, alias é até uma métrica aconselhada pela Microsoft na documentação do C# separar em If as diversas condições por parênteses:
- Código:
if ((true) && (true))
{
}
Tegh- Avançado
- PONTOS : 2653
REPUTAÇÃO : 97
Idade : 23
Respeito as regras :
Re: [RESOLVIDO] Problema com script básico
Opa valeu! O pior é que eu removi os ; e nem notei que tinha posto e nem notei que tinha tirado kkTegh escreveu:Se for efetivar comparação entre os códigos, o problema é que na função Update os If's tem um ponto e vírgula a sua frente, o que impede a interligação do bloco de código com a condição:
- Código:
if (true); // <= Olha o seu inimigo aqui
{
// Código inacessível
}
Os parênteses não tem influência, alias é até uma métrica aconselhada pela Microsoft na documentação do C# separar em If as diversas condições por parênteses:
- Código:
if ((true) && (true))
{
}
yurinogueira- Membro
- PONTOS : 2494
REPUTAÇÃO : 11
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Estou com um problema no script de animação
» [RESOLVIDO] Problema em um script
» [RESOLVIDO] Problema com um Script
» [RESOLVIDO] Problema com script
» [Resolvido]Problema nesse pequeno script
» [RESOLVIDO] Problema em um script
» [RESOLVIDO] Problema com um Script
» [RESOLVIDO] Problema com script
» [Resolvido]Problema nesse pequeno script
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos