PlayerPrefs??
+2
rafaelllsd
speedluk
6 participantes
Página 1 de 1
PlayerPrefs??
Galera estou quebrando a cabeça com isso a um tempo, não encontrei nenhum tutorial explicando..
estou usando PlayerPrefs.GetInt e PlayerPrefs.SetInt para salvar meu score e minhas vidas quando acaba as vidas ele ate salva o highscore e as parada tudo
só que quando passo pra outra cena no caso a fase 2 ele continua o highscore salvo e depois que pego uma moeda que no caso da +1 ponto zera os pontos '-'
estou usando PlayerPrefs.GetInt e PlayerPrefs.SetInt para salvar meu score e minhas vidas quando acaba as vidas ele ate salva o highscore e as parada tudo
só que quando passo pra outra cena no caso a fase 2 ele continua o highscore salvo e depois que pego uma moeda que no caso da +1 ponto zera os pontos '-'
speedluk- Avançado
- PONTOS : 2654
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: PlayerPrefs??
Poste o script para analise, e também veja:
Ou um modo mais fácil de salvar e carregar com playerprefs:
https://www.schultzgames.com/t8640-tutorial-salvar-dados-com-playerprefs-facilmente#60713
Ou um modo mais fácil de salvar e carregar com playerprefs:
https://www.schultzgames.com/t8640-tutorial-salvar-dados-com-playerprefs-facilmente#60713
rafaelllsd- ProgramadorMaster
- PONTOS : 5219
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: PlayerPrefs??
Script do menu quando as vidas acaba salva o highscore..
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class MenuManager : MonoBehaviour
{
public Text scoreText;
private int score;
private void Start () {
score = PlayerPrefs.GetInt ("PlayerScore");
scoreText.text = "HighScore : " + score.ToString ();
}
public void ToGame ()
{
Application.LoadLevel ("map1");
}
}
========================================================
Script do LevelManager
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class LevelManager : MonoBehaviour {
public static LevelManager Instance{ set; get; }
private int hitpoint = 3;
private int score = 0;
public Transform spawnPosition;
public Transform playerTransform;
public Text scoreText;
public Text hitPointText;
private void Awake () {
Instance = this;
scoreText.text = "Score : " + score.ToString ();
hitPointText.text = "Vidas : " + hitpoint.ToString ();
}
private void Update() {
if (playerTransform.position.y < -1.92) {
playerTransform.position = spawnPosition.position;
hitpoint--;
hitPointText.text = "Vidas : " + hitpoint.ToString ();
if (hitpoint <= 0) {
PlayerPrefs.SetInt ("PlayerScore", score);
Application.LoadLevel("menu");
}
}
}
public void Win () {
if (score > PlayerPrefs.GetInt ("PlayerScore")) {
PlayerPrefs.SetInt ("PlayerScore", score);
}
Application.LoadLevel("map2");
}
public void CollectCoin() {
score ++;
scoreText.text = "Score : " + score.ToString ();
}
public void Vidas() {
hitpoint++;
hitPointText.text = "Vidas : " + hitpoint.ToString ();
}
}
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class MenuManager : MonoBehaviour
{
public Text scoreText;
private int score;
private void Start () {
score = PlayerPrefs.GetInt ("PlayerScore");
scoreText.text = "HighScore : " + score.ToString ();
}
public void ToGame ()
{
Application.LoadLevel ("map1");
}
}
========================================================
Script do LevelManager
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class LevelManager : MonoBehaviour {
public static LevelManager Instance{ set; get; }
private int hitpoint = 3;
private int score = 0;
public Transform spawnPosition;
public Transform playerTransform;
public Text scoreText;
public Text hitPointText;
private void Awake () {
Instance = this;
scoreText.text = "Score : " + score.ToString ();
hitPointText.text = "Vidas : " + hitpoint.ToString ();
}
private void Update() {
if (playerTransform.position.y < -1.92) {
playerTransform.position = spawnPosition.position;
hitpoint--;
hitPointText.text = "Vidas : " + hitpoint.ToString ();
if (hitpoint <= 0) {
PlayerPrefs.SetInt ("PlayerScore", score);
Application.LoadLevel("menu");
}
}
}
public void Win () {
if (score > PlayerPrefs.GetInt ("PlayerScore")) {
PlayerPrefs.SetInt ("PlayerScore", score);
}
Application.LoadLevel("map2");
}
public void CollectCoin() {
score ++;
scoreText.text = "Score : " + score.ToString ();
}
public void Vidas() {
hitpoint++;
hitPointText.text = "Vidas : " + hitpoint.ToString ();
}
}
speedluk- Avançado
- PONTOS : 2654
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: PlayerPrefs??
Faltou vc usar o comanto PlayerPrefs.GetInt ao iniciar a scene da fase, pode ser dentro da Awake mesmo:
private void Awake () {
Instance = this;
Score = PlayerPrefs.GetInt ("PlayerScore");
scoreText.text = "Score : " + score.ToString ();
hitPointText.text = "Vidas : " + hitpoint.ToString ();
}
private void Awake () {
Instance = this;
Score = PlayerPrefs.GetInt ("PlayerScore");
scoreText.text = "Score : " + score.ToString ();
hitPointText.text = "Vidas : " + hitpoint.ToString ();
}
Nalfam- MembroAvançado
- PONTOS : 2413
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: PlayerPrefs??
dessa forma tentei aqui mas assim o awake pega ja o highscore e mesmo assim ainda continua o problema de não salvar na cena 2 o score da primeira cena '-'
vou tentar um outro meio pelo vídeo do marcos mas mesmo assim agradeço muito a paciência e ajuda de todos =]
vou tentar um outro meio pelo vídeo do marcos mas mesmo assim agradeço muito a paciência e ajuda de todos =]
speedluk- Avançado
- PONTOS : 2654
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: PlayerPrefs??
Você pode tentar fazer o objeto não ser destruído ao carregar,speedluk escreveu:dessa forma tentei aqui mas assim o awake pega ja o highscore e mesmo assim ainda continua o problema de não salvar na cena 2 o score da primeira cena '-'
vou tentar um outro meio pelo vídeo do marcos mas mesmo assim agradeço muito a paciência e ajuda de todos =]
ou pode fazer ele savlar o score toda vez q mudar de cena, assim, qdo o script for carregado e puxar o score novamente ele já vai ter o valor atualizado
Re: PlayerPrefs??
Vou tentar o DontDestroyOnLoad caso não funcionar vou tentar reescrever em um novo objeto como no vídeo ...
sei que não tem muito a ver mas não sei se foi por causa de algo desse projeto meu que deu algum bug '-'
esse e um 2.5D então não usa o eixo Z
porem depois que iniciei esse projeto meus outros projetos de teste que eram em 3D ficou bugado '-'
inicio qualquer coisa tipo FPS controller ou third person controller e ele ja inicia andando no eixo Z ja verifiquei na void start e em outras ele sempre inicia e não para de ir na direção Z
obs; ja ate reinstalei o unity e não resolveu
sei que não tem muito a ver mas não sei se foi por causa de algo desse projeto meu que deu algum bug '-'
esse e um 2.5D então não usa o eixo Z
porem depois que iniciei esse projeto meus outros projetos de teste que eram em 3D ficou bugado '-'
inicio qualquer coisa tipo FPS controller ou third person controller e ele ja inicia andando no eixo Z ja verifiquei na void start e em outras ele sempre inicia e não para de ir na direção Z
obs; ja ate reinstalei o unity e não resolveu
speedluk- Avançado
- PONTOS : 2654
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: PlayerPrefs??
Toda vez que vc muda de uma scene para outra vc precisa pegar os valores através do PlayerPrefs.Get...
Confere direitinho nos seus scripts se vc está realmente pegando os valores, pois nesse "Awake" não está pegando valor nenhum.
Na primeira scene não dá erro justamente pq o score começa com zero. Já na segunda scene vc tem esse problema.
Boa sorte ai =]
Confere direitinho nos seus scripts se vc está realmente pegando os valores, pois nesse "Awake" não está pegando valor nenhum.
Na primeira scene não dá erro justamente pq o score começa com zero. Já na segunda scene vc tem esse problema.
Boa sorte ai =]
Nalfam- MembroAvançado
- PONTOS : 2413
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: PlayerPrefs??
fala gente demorei um pouco quase desisti do game =/
tentei essa forma do vídeo que o marcos postou e de um outro nos tutoriais aqui do site fiz alguns testes acabei foi bagunçando os scripts tudo mas nada de sucesso =/
agora ate dei uma "gambiarrada" aqui e consegui passar um score de uma cena pra outra so que quando o player zera as vidas e morre salva o highscore , ai era pra começar com 0 de score quando reinicio so que o valor que começa e o do highscore
to perdendo a cabeça ja viu XD
fome de pular pra outro projeto ta gritando porem assim nunca termino nenhum..
tentei essa forma do vídeo que o marcos postou e de um outro nos tutoriais aqui do site fiz alguns testes acabei foi bagunçando os scripts tudo mas nada de sucesso =/
agora ate dei uma "gambiarrada" aqui e consegui passar um score de uma cena pra outra so que quando o player zera as vidas e morre salva o highscore , ai era pra começar com 0 de score quando reinicio so que o valor que começa e o do highscore
to perdendo a cabeça ja viu XD
fome de pular pra outro projeto ta gritando porem assim nunca termino nenhum..
speedluk- Avançado
- PONTOS : 2654
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: PlayerPrefs??
De que forma exatamente e quando está chamando o "Set Int" para salvar o score no final da cena?
Re: PlayerPrefs??
Double post mas quero dizer outra coisa...
Nunca tentei, afinal, usei PlayerPerfs uma vez e não tive problemas, mas, já tentou atualizar o score de acordo quando ele vai mudando? Penso que pode haver problemas de desempenho, mas como nunca fiz isso, não sei como pode ser. Se tiver dificuldades, faço alguns testes aqui e compartilho os detalhes.
Nunca tentei, afinal, usei PlayerPerfs uma vez e não tive problemas, mas, já tentou atualizar o score de acordo quando ele vai mudando? Penso que pode haver problemas de desempenho, mas como nunca fiz isso, não sei como pode ser. Se tiver dificuldades, faço alguns testes aqui e compartilho os detalhes.
Re: PlayerPrefs??
pra falar verdade ja fucei tanto os codigos que me perdi todo e acabei cagando tudo agora XD
mas tudo que to usando ta assim..
mas tudo que to usando ta assim..
- Código:
//script da cena menu
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class MenuManager : MonoBehaviour
{
public Text scoreText;
private int score;
private void Start () {
score = PlayerPrefs.GetInt ("PlayerScore");
PlayerPrefs.SetInt ("PlayerScore", score);
scoreText.text = "HighScore : " + score.ToString ();
}
public void ToGame () {
Application.LoadLevel ("map1");
}
}
- Código:
// script do level manager
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class LevelManager : MonoBehaviour {
public static LevelManager Instance{ set; get; }
private int hitpoint = 3;
private static int score = 0;
public Transform spawnPosition;
public Transform playerTransform;
public Text scoreText;
public Text hitPointText;
private void Awake () {
Instance = this;
scoreText.text = "Score : " + score.ToString ();
hitPointText.text = "Vidas : " + hitpoint.ToString ();
}
void Start () {
}
private void Update() {
if (playerTransform.position.y < -1.92) {
playerTransform.position = spawnPosition.position;
hitpoint--;
hitPointText.text = "Vidas : " + hitpoint.ToString ();
if (hitpoint <= 0) {
PlayerPrefs.SetInt ("PlayerScore", score);
Application.LoadLevel("menu");
}
}
}
public void Win () {
SceneManager.LoadScene ("map2");
}
public void SaveScore () {
PlayerPrefs.GetInt ("PlayerScore", score);
}
public void CollectCoin() {
score ++;
scoreText.text = "Score : " + score.ToString ();
}
public void Vidas() {
hitpoint++;
hitPointText.text = "Vidas : " + hitpoint.ToString ();
}
}
- Código:
//script do player
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
private float inputDirection;
private float verticalVelocity;
private float speed = 5.0f;
private float gravity = 30.0f;
private float jumpForce = 10.0f;
private bool secondJumpAvail = false;
private Vector3 moveVector;
private Vector3 lastMotion;
private CharacterController controller;
void Start () {
controller = GetComponent<CharacterController> ();
}
void Update () {
IsControllerGrounded ();
moveVector = Vector3.zero;
inputDirection = Input.GetAxis ("Horizontal") * speed;
if (IsControllerGrounded())
{
verticalVelocity = 0;
if (Input.GetKeyDown (KeyCode.Space)) {
verticalVelocity = jumpForce;
secondJumpAvail = true;
}
moveVector.x = inputDirection;
}
else
{
if (Input.GetKeyDown (KeyCode.Space)) {
if (secondJumpAvail) {
verticalVelocity = jumpForce;
secondJumpAvail = false;
}
}
verticalVelocity -= gravity * Time.deltaTime;
moveVector.x = lastMotion.x;
}
moveVector.y = verticalVelocity;
controller.Move (moveVector * Time.deltaTime);
lastMotion = moveVector;
}
private bool IsControllerGrounded() {
Vector3 leftRayStart;
Vector3 rightRayStart;
leftRayStart = controller.bounds.center;
rightRayStart = controller.bounds.center;
leftRayStart.x -= controller.bounds.extents.x;
rightRayStart.x += controller.bounds.extents.x;
if (Physics.Raycast (leftRayStart, Vector3.down, (controller.height / 2) + 0.1f))
return true;
if (Physics.Raycast (rightRayStart, Vector3.down, (controller.height / 2) + 0.1f))
return true;
return false;
}
private void OnControllerColliderHit(ControllerColliderHit hit){
if (controller.collisionFlags == CollisionFlags.Sides) {
if (Input.GetKeyDown (KeyCode.Space)) {
Debug.DrawRay (hit.point, hit.normal, Color.red, 2.0f);
moveVector = hit.normal * speed;
verticalVelocity = jumpForce;
secondJumpAvail = true;
}
}
//coletaveis tudo que encosta com a tag...
switch (hit.gameObject.tag) {
case "Coin":
LevelManager.Instance.CollectCoin ();
Destroy (hit.gameObject);
gameObject.GetComponent<AudioSource>().Play();
break;
case "jumpPad":
verticalVelocity = jumpForce * 2;
secondJumpAvail = true;
break;
case "WinBox":
LevelManager.Instance.Win ();
LevelManager.Instance.SaveScore ();
break;
case "Vida":
LevelManager.Instance.Vidas ();
Destroy (hit.gameObject);
break;
default:
break;
}
}
}
speedluk- Avançado
- PONTOS : 2654
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: PlayerPrefs??
Cara... dê uma olhada com carinho que vc cosegue!
Só uma dúvida... estes scripts estão em uma única scene? Ou cada script desses está em uma scene diferente?
Pelo que eu entendi:
1º script = scene inicial
2º script = scene fases (1 e 2)
é isso?
Só uma dúvida... estes scripts estão em uma única scene? Ou cada script desses está em uma scene diferente?
Pelo que eu entendi:
1º script = scene inicial
2º script = scene fases (1 e 2)
é isso?
Nalfam- MembroAvançado
- PONTOS : 2413
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: PlayerPrefs??
na cena de menu tem o script do menu manager
na cena do map1 tem o do player e o level manager e era pra ter também no map2
único objeto diferente em uma cena e o menu manager
creio que o problema ta sendo na cena do menu porque quando clico no botão para iniciar a cena do map1 o highscore esta sendo salvo em score atual do map1
tentei ja ate o playerprefs.deleteall pra ver se parava de setar o high score '-' sei la XD
como eu disse sou mesmo muito iniciante kkk ja to é na vergonha aqui demais vo fechar esse projeto kkk quem sabe um dia volto nisso
na cena do map1 tem o do player e o level manager e era pra ter também no map2
único objeto diferente em uma cena e o menu manager
creio que o problema ta sendo na cena do menu porque quando clico no botão para iniciar a cena do map1 o highscore esta sendo salvo em score atual do map1
tentei ja ate o playerprefs.deleteall pra ver se parava de setar o high score '-' sei la XD
como eu disse sou mesmo muito iniciante kkk ja to é na vergonha aqui demais vo fechar esse projeto kkk quem sabe um dia volto nisso
speedluk- Avançado
- PONTOS : 2654
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: PlayerPrefs??
Não desista... vai esquentando a cabeça que uma hora clareia tudo srsr...
no script do player vc usou um switch com tag para pegar moedas,
já no LeveManager tem um public void CollectCoin, qual delas funciona?
Quando vc encosta na tag "Coin", faz o barulho do audiosource indicando que funcionou?
Vou tentar fazer umas mudanças mais ou menos aqui, depois os mais avançados vão aprimorando =]
no script do player vc usou um switch com tag para pegar moedas,
já no LeveManager tem um public void CollectCoin, qual delas funciona?
Quando vc encosta na tag "Coin", faz o barulho do audiosource indicando que funcionou?
Vou tentar fazer umas mudanças mais ou menos aqui, depois os mais avançados vão aprimorando =]
Nalfam- MembroAvançado
- PONTOS : 2413
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: PlayerPrefs??
kkk pow acho que to a frente da situação de queimar cabeça ja ^^ to a umas duas semanas ja nessa luta devo dizer que graças a esse "pequeno" detalhe aprendi bastante, com certeza esse problema deve ser um erro extremamente bobo meu
quanto a void acho que eu poderia também acessar o score e scoreText do level manager pelo switch mas não sei se faria diferença =/
creio que isso seja só que esteja bem desorganizado mesmo hoje vou fazer alguns testes e "desmembrar" as partes dos scripts que envolvem score pra poder salvalos em um script separado
vou da mais uma lutada aqui ^^
de qualquer forma muito obrigado a força de todos e o incentivo é que do zero e meio apertado entrar em programação ^^
quanto a void acho que eu poderia também acessar o score e scoreText do level manager pelo switch mas não sei se faria diferença =/
creio que isso seja só que esteja bem desorganizado mesmo hoje vou fazer alguns testes e "desmembrar" as partes dos scripts que envolvem score pra poder salvalos em um script separado
vou da mais uma lutada aqui ^^
de qualquer forma muito obrigado a força de todos e o incentivo é que do zero e meio apertado entrar em programação ^^
speedluk- Avançado
- PONTOS : 2654
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Tópicos semelhantes
» O que é PlayerPrefs e DontDestroyOnLoad
» PlayerPrefs
» PlayerPrefs salva SetActive??
» (DUVIDA)PlayerPrefs
» [RESOLVIDO] PlayerPrefs
» PlayerPrefs
» PlayerPrefs salva SetActive??
» (DUVIDA)PlayerPrefs
» [RESOLVIDO] PlayerPrefs
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos