SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Como usar o touchpad da unity para orbital o personagem em terceira pessoas ?
(Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.
[TUTORIAL] JavaScript & HTML - Eventos
Unity + Photon 2
[TUTORIAL] Sistema de fome, sede, barra de vida, barra de estamina, itens e dano por queda
Erro MSVehicleController
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[Em Desenvolvimento] Battles of Worlds
Artistas 3D e Programadores Unity3D (Remunerado)
[Modelo 3D]Unity Interior 3D Estilo De Terror + Download Grátis
iniciar jogo com uma cena desativada e ativá-la ao colidir com bloco desativando as outras
Salvar e carregar dados json player pref
Dificuldade no adição do Android SDK a Unity e erro no Android Studio
[TUTORIAL] Sistema de tiro com RAYCAST (várias armas, mira laser, munição, dano, etc, etc)
[TUTORIAL] Sistema de Entregas + GPS!
Como fazer um objeto ter a mesma rotação de outro
Favela Killer Mapa
Servidor De Desenvolvimento De Jogos GGI DISCORD
[Duvida] Script pegar itens
[TUTORIAL] Sistema de vida,morte,dano
[TUTORIAL] Third Person Shooter
[GameJam] Competição organizada pela BitCodeStudios
Como Faz pra barra de vida aparecer de uma cena pra outra?
[____ENQUETE____] Eleições para presidente 2018 (2º turno)
[PROJETO MOBILE] Defeat the Illuminatis
[RESOLVIDO] Problema com cenário infinito ou algum tipo de bug na Unity?
Unity Remota 5, sem reação.
Procuro Equipe Para Criação de Jogo [PAGO]
Procuro Map Designer [PAGO $$$] (criador de mapas)
[TUTORIAL] Sistema de Oficina de Carros
[RESOLVIDO] Unity 2018 - Bug com a iluminação da Spotlight nos Objetos
[TUTORIAL] Menu Pause AVANÇADO (Unity 5.3 ou superior)
[TUTORIAL] Barra de VIDA / HP contínua
Blander ao juntar algumas partes ficam mais escuro
Problema com Esqueleto do personagem
{Possível Projeto para Unity} Buscando membros para formar uma Equipe...
[TUTORIAL] Como spawnar inimigos [Tutorial simples]
Não consigo fazer o box collider descer junto com o personagem.
BUG UNITY 3D ROSA A SCENE E GAME
Sistema de Grau Realista - Jogo de Moto
Programação Unity android 2D
(UNITY) Erro ao compilar a Build Android
Erro na sincronização dos player no Photon
[TUTORIAL] Barra de vida usando a UI da Unity(Slider)
[Projeto] Line Battle
[TUTORIAL] Desbloqueio e Escolha de Personagens.
[RESOLVIDO] Problema com o navmesh agent
[RESOLVIDO] Registro cadrastando uma vez?
Vaga de modelador 3D, com remuneração...
Problemas com Colisores
Como criar Atlas de textura com modelos exportados do Sketchup?
Unity - Sistema de Pagamento
[RESOLVIDO] iniciar áudio ao passar por uma área da cena
[RESOLVIDO] como envia asset para asset store
[TUTORIAL] Mover personagem com Touch, no estilo SUBWAY SURFERS
codigo não deleta prefab e não respeita o if
[TUTORIAL] Filtros de áudio para AudioListner (Low pass filter, High pass filter, etc)
[____CICLO DE TRABALHO DA UNITY____]
Meu jogo não está abrindo em outro PC
[TUTORIAL] DANO POR QUEDA e BARRA DE VIDA CONTÍNUA no mesmo script
Discord para desenvolvimento de jogos
FAB in WWII (Novo jogo na Play Storee é Free :D)
[TUTORIAL] Sistema de PORTAS e CHAVES
Criar uma Array ou List com as resoluções suportadas
Alguem traz esse tutorial pro forum?
Realistic fps prefab tenho esses erros ao tentar colocar um script de entrar sair do carro
[RESOLVIDO] Alguem pode me ajudar? tenho esse erro aqui em um script
[RESOLVIDO] Personagem 2d batendo na borda e voando.
[RESOLVIDO] Não consigo usar o Sphere collider.
[RESOLVIDO] Como usa o UI.Text do unity?
Como criar botão de nova tentativa
[RESOLVIDO] Duvida em Jogo de tiro 2D
[RESOLVIDO] duvida com PlayerPrefs
Iniciar animação em determinado frame
Sistema De Troca De Armas 2D
[TUTORIAL] Script de arma completo! [FREE]
[TUTORIAL] Ordenar valores de uma array[] em ordem CRESCENTE OU DECRESCENTE
Meu jogo de runner em primeira pessoa !
[RESOLVIDO] Timer pra mudar de cena na unity 2018
Atualizar Build
[TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
Como usar Vector3.Angles para detectar que algo está na frente de outro objeto?
[TUTORIAL] Como fazer porta malas do carro abrir atravez de um botão?
Script nao funciona
Como desativar scripts em objetos distantes
[RESOLVIDO] Bug Da Unity ?
[AULA] HTML - Aula 1: Introdução
Raycast
[TUTORIAL]"Morte" do personagem (Unity 5.3 ou Superior)
Problema com a unity ads
como eu faço para a camera orbitar um objeto atraves de um joystick?????
XML, suporte e utilização.
Arrastar objetos em plano 2D (ArrastarT).
Participe da Game Jam - Jaaj do canal Amdré Young!
Criar sistema de arrastar e soltar objetos em determinado lugar
AWM Champions I
[RESOLVIDO] Como verificar se o objeto é diferente de null
COMO FAÇO PARA FAZER UM SISTEMA DE SKIN PARA ANDROID ESTILO HEAVY BUS, PROTON BUS, ETC
[TUTORIAL] Snake com Unity + C#
Hoje à(s) 1:41 am
Hoje à(s) 12:43 am
Ontem à(s) 10:37 pm
Ontem à(s) 10:37 pm
Ontem à(s) 9:20 pm
Ontem à(s) 8:56 pm
Ontem à(s) 6:34 pm
Ontem à(s) 6:32 pm
Ontem à(s) 4:52 pm
Ontem à(s) 3:46 pm
Ontem à(s) 3:00 pm
Ontem à(s) 1:45 pm
Ontem à(s) 9:58 am
Dom Out 21, 2018 11:29 pm
Dom Out 21, 2018 8:26 pm
Dom Out 21, 2018 8:26 pm
Dom Out 21, 2018 2:26 pm
Dom Out 21, 2018 1:10 pm
Dom Out 21, 2018 11:07 am
Dom Out 21, 2018 9:36 am
Dom Out 21, 2018 1:10 am
Sab Out 20, 2018 4:15 pm
Sab Out 20, 2018 2:48 pm
Sab Out 20, 2018 1:10 pm
Sab Out 20, 2018 11:46 am
Sex Out 19, 2018 10:24 pm
Sex Out 19, 2018 7:51 pm
Sex Out 19, 2018 7:23 pm
Sex Out 19, 2018 7:18 pm
Qui Out 18, 2018 7:09 pm
Qui Out 18, 2018 4:52 pm
Qui Out 18, 2018 2:57 pm
Qui Out 18, 2018 10:36 am
Qua Out 17, 2018 11:45 pm
Qua Out 17, 2018 11:17 pm
Qua Out 17, 2018 10:14 pm
Qua Out 17, 2018 9:49 pm
Qua Out 17, 2018 8:32 pm
Qua Out 17, 2018 5:18 pm
Qua Out 17, 2018 5:16 pm
Qua Out 17, 2018 5:13 pm
Qua Out 17, 2018 5:10 pm
Qua Out 17, 2018 4:35 pm
Qua Out 17, 2018 3:13 pm
Qua Out 17, 2018 7:28 am
Ter Out 16, 2018 3:34 pm
Ter Out 16, 2018 12:41 pm
Ter Out 16, 2018 11:48 am
Seg Out 15, 2018 5:34 pm
Seg Out 15, 2018 5:03 pm
Seg Out 15, 2018 1:19 pm
Seg Out 15, 2018 12:56 pm
Seg Out 15, 2018 11:34 am
Seg Out 15, 2018 6:17 am
Seg Out 15, 2018 12:30 am
Seg Out 15, 2018 12:18 am
Dom Out 14, 2018 12:52 am
Sab Out 13, 2018 9:08 pm
Sab Out 13, 2018 5:24 pm
Sab Out 13, 2018 4:00 pm
Sex Out 12, 2018 6:00 pm
Sex Out 12, 2018 2:56 pm
Sex Out 12, 2018 2:42 pm
Qui Out 11, 2018 8:59 pm
Qui Out 11, 2018 8:32 pm
Qui Out 11, 2018 3:09 pm
Qui Out 11, 2018 2:32 pm
Qui Out 11, 2018 12:15 pm
Qui Out 11, 2018 11:35 am
Qui Out 11, 2018 10:50 am
Qui Out 11, 2018 8:24 am
Qua Out 10, 2018 11:31 pm
Qua Out 10, 2018 10:43 pm
Qua Out 10, 2018 8:22 pm
Qua Out 10, 2018 4:53 pm
Qua Out 10, 2018 4:44 pm
Qua Out 10, 2018 3:48 pm
Qua Out 10, 2018 12:40 pm
Ter Out 09, 2018 9:51 pm
Ter Out 09, 2018 8:16 pm
Ter Out 09, 2018 8:16 pm
Ter Out 09, 2018 8:10 pm
Ter Out 09, 2018 8:09 pm
Ter Out 09, 2018 7:38 pm
Ter Out 09, 2018 2:55 pm
Seg Out 08, 2018 6:13 pm
Seg Out 08, 2018 4:40 pm
Seg Out 08, 2018 2:39 pm
Seg Out 08, 2018 12:52 pm
Seg Out 08, 2018 12:16 pm
Seg Out 08, 2018 10:33 am
Dom Out 07, 2018 1:59 pm
Dom Out 07, 2018 11:53 am
Sab Out 06, 2018 11:14 pm
Sab Out 06, 2018 10:55 pm
Sab Out 06, 2018 8:50 pm
Sab Out 06, 2018 8:41 pm
Sab Out 06, 2018 2:21 pm
Sab Out 06, 2018 1:33 pm
CaioItz
rafaelllsd
MayLeone
ruanzikaad
Pablo Conti
MarcosSchultz
Dom3000
Dom3000
Caio Cesar Miguel
francisco barroso
dstaroski
igorobm
dstaroski
francisco barroso
KAYKETHEO27
ruanzikaad
Isabela
SoullSec
Pablo Conti
francisco barroso
Callyde Jr
hetrodo
hao3726
JohnRambo
dstaroski
FabioBRPA
francisco barroso
SoullSec
SoullSec
leandrospp7
CaerHunter
Mourao
francisco barroso
DominicDK
DominicDK
NoctisLucis
francisco barroso
MayLeone
MarcosSchultz
MarcosSchultz
MarcosSchultz
francisco barroso
hao3726
dstaroski
dstaroski
ismarspn
Jmspp
Callyde Jr
igorobm
conceptfac
Isabela
Callyde Jr
Daniel Dória
diegopds
MarcosSchultz
igorobm
MarcosSchultz
MarcosSchultz
Flávio
francisco barroso
SuperGamer
SoullSec
SoullSec
Flávio
francisco barroso
Samuelostgamer
Samuelostgamer
gurgelg752
luansantos
guimaraf
theus.mors
TecnoGames
Eduardoro39
QueriaStarMorto
QueriaStarMorto
mecjo
NyanHeavyBR
CaioItz
RodriGO3477
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
FelipeSouza11
FelipeSouza11
QueriaStarMorto
Tegh
Jmspp
Callyde Jr
Jmspp
Gabryellx007
Tegh
Tegh
Luizdanhp
MarcosSchultz
TioUV
QueriaStarMorto
KAYKETHEO27
NKKF

Salvar dados

Ir em baixo

DÚVIDA Salvar dados

Mensagem por arnaldojunior em Qua Maio 02, 2018 2:30 pm

Olá estou tentando criar um sistema para salvar os dados da cena, vi alguns tutoriais sobre salvar em binário e que para tanto não posso referenciar nada do meu arquivo de gerenciamento como publico. mas encontrei problemas logo de cara para salvar as barras de estamina e vida.
Ambas usam slider para definir seu valor.


Código:



using System.Collections;

using UnityEngine.UI;

using System.Collections.Generic;

using UnityEngine;

using System;

public class UIManager : MonoBehaviour {



    public static UIManager instance;



    public Slider barrastamina, BarraDeVida;

    public float perda, ganho;

    public int QuantSede=0;

    private bool Sede=false;







    // Use this for initialization

    void Awake ()

    {



    }



    // Update is called once per frame

    void Update ()

    {

        //===========================================Controle da Stamina===========================================//

        if (Time.timeScale > 0)

        {

            if (Input.GetKey(KeyCode.LeftShift))

            {

                if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))

                {

                    barrastamina.value -= perda;

                    QuantSede++;

                }

            }



            if (Input.GetKey(KeyCode.Space))

            {

                barrastamina.value -= perda / 2;

                QuantSede++;

            }



            if (Input.GetKey(KeyCode.Mouse0))

            {

                barrastamina.value -= perda / 2;

                QuantSede++;

            }



            if (Sede == false)

            {

                if (barrastamina.value > 2)

                {

                    if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))

                    {

                        barrastamina.value += ganho / 3;

                    }

                    else

                    {

                        barrastamina.value += ganho;

                    }

                }

                else

                {

                    if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))

                    {

                        barrastamina.value += ganho / 20;

                    }

                    else

                    {

                        barrastamina.value += ganho;

                    }

                }

            }

            if (QuantSede >= 15000)

            {

                Sede = true;

            }

            else

            {

                Sede = false;

            }



        }



    }



}



Como podem ver só implementei a estamina por enquanto.
Mas ai vem o problema, não sei como pegar esse dado da barra estamina e envia-lo ao script de game manager e depois busca-lo novamente quando o save for recarregado.
Código:



using System.Collections;

using System.Collections.Generic;

using UnityEngine;



public class GameManager : MonoBehaviour {



    public static GameManager instance;



    // Use this for initialization

    void Awake()

    {

        if (instance == null)

        {

            instance = this;

            DontDestroyOnLoad(gameObject);

        }

        else if (instance != null)

        {

            Destroy(gameObject);

        }

    }



    // Update is called once per frame



    void Update ()

    {



    }



}

Ainda não implementei nada neste script, mas só para terem uma ideia do que se trata. Pensei em criar uma void no UImanager que enviasse o valor para o Game manager, mas como defino o valor do slider barrastamina?
Agradeço se puderem me ajudar neste problema.

arnaldojunior
Membro
Membro

PONTOS : 829
REPUTAÇÃO : 1
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Salvar dados

Mensagem por Callyde Jr em Sex Maio 04, 2018 12:14 pm

Voce vai ter que fazer no script as variaveis int ou float
E salvalas no outro script.
EX:
Código:
using System.Collections;

using UnityEngine.UI;

using System.Collections.Generic;

using UnityEngine;

using System;

public class UIManager : MonoBehaviour {



    public static UIManager instance;
    public float stamina = 100;
    public float Vida = 100;



    public Slider barrastamina, BarraDeVida;

    public float perda, ganho;

    public int QuantSede=0;

    private bool Sede=false;







    // Use this for initialization

    void Awake ()

    {



    }



    // Update is called once per frame

    void Update ()

    {
   barrastamina.value = stamina;
    BarraDeVida.value = Vida;
        //===========================================Controle da Stamina===========================================//

        if (Time.timeScale > 0)

        {

            if (Input.GetKey(KeyCode.LeftShift))

            {

                if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))

                {

                    barrastamina.value -= perda;

                    QuantSede++;

                }

            }



            if (Input.GetKey(KeyCode.Space))

            {

                barrastamina.value -= perda / 2;

                QuantSede++;

            }



            if (Input.GetKey(KeyCode.Mouse0))

            {

                barrastamina.value -= perda / 2;

                QuantSede++;

            }



            if (Sede == false)

            {

                if (barrastamina.value > 2)

                {

                    if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))

                    {

                        barrastamina.value += ganho / 3;

                    }

                    else

                    {

                        barrastamina.value += ganho;

                    }

                }

                else

                {

                    if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))

                    {

                        barrastamina.value += ganho / 20;

                    }

                    else

                    {

                        barrastamina.value += ganho;

                    }

                }

            }

            if (QuantSede >= 15000)

            {

                Sede = true;

            }

            else

            {

                Sede = false;

            }



        }



    }



}

avatar
Callyde Jr
Programador

Masculino PONTOS : 2685
REPUTAÇÃO : 364
Idade : 39
Áreas de atuação : Iniciante em modelagem Blender,ScketSHUP
Progamador
Ideialista

Meu Canal
https://www.youtube.com/ch
Respeito as regras :

Ver perfil do usuário http://unnygames.000webhostapp.com/

Voltar ao Topo Ir em baixo

DÚVIDA Re: Salvar dados

Mensagem por arnaldojunior em Dom Maio 06, 2018 8:54 pm

Não sei o que fiz mas minha resposta não apareceu, se aparecer para vocês desculpem a duplicidade.

Consegui salvar os dados, tive problemas pelo teste da "cena", mas criei uma outra variável e armazenei os dados quando estava pausado, então só tive de fazer um teste para me certificar que não estava salvando o main menu. Pensando agora acho que vou testar a cena pelo nome dela, se for "main menu" salvo a anterior.
Código:



using System.Collections;

using System.Collections.Generic;

using UnityEngine.UI;

using UnityEngine;

using System.Runtime.Serialization.Formatters.Binary;

using System.IO;

using System;

using UnityEngine.SceneManagement;



public class GameManager : MonoBehaviour {



    public static GameManager instance;

    private SaveGameData savedGame;

    private float barraStaminaDados;

    private const string File_Path = "saveGameData.dat";

    private bool isNewGame=false;

    private Vector3 positionPlayerDados;

    private int stageAnte,stageAtual;





    // Use this for initialization 

    void Awake()

    {

        if (instance == null)

        {

            instance = this;

            DontDestroyOnLoad(gameObject);

        }

        else if (instance != null)

        {

            Destroy(gameObject);

        }

    }

    private void Start()

    {

        Load();

    }



    private void Update()

    {

        if(Time.timeScale==0)

        {

            stageAnte = SceneManager.GetActiveScene().buildIndex;

        }

    }



    void OnEnable()

    {

        PLAYER.PlayerPosicao += OnPlayerPosicao;

        UIManager.StaminaControl += OnStaminaControl;

        SceneManager.sceneLoaded += OnStageLoad;

    }



    private void OnDisable()

    {

        PLAYER.PlayerPosicao -= OnPlayerPosicao;

        UIManager.StaminaControl -= OnStaminaControl;

        SceneManager.sceneLoaded -= OnStageLoad;

    }



    void OnPlayerPosicao()

    {

        positionPlayerDados = PLAYER.positionPlayer;

    }



    void OnStaminaControl()

    {

        barraStaminaDados = UIManager.valBarraStamina;        

    }



    void OnStageLoad(Scene scene, LoadSceneMode mode)

    {

        if (!isNewGame && savedGame!=null)

        {

            barraStaminaDados = savedGame.barraStaminaSave;

            UIManager.valBarraStamina = barraStaminaDados;



            PLAYER.instance.transform.position = new Vector3(savedGame.spositionX, savedGame.spositionY, savedGame.spositionZ);



            isNewGame = true;



            UIManager.instance.UpdateUI();

        }

    }



    void SceneControl()

    {

        stageAtual= SceneManager.GetActiveScene().buildIndex;

        if (stageAtual != stageAnte)

        {

            stageAtual = stageAnte;

        }

    }



    public void SaveGame()

    {

        BinaryFormatter bf = new BinaryFormatter();

        FileStream file = File.Create(Path.Combine(Application.streamingAssetsPath, File_Path));



        SaveGameData save = new SaveGameData();

        save.barraStaminaSave = barraStaminaDados;



        save.spositionX = positionPlayerDados.x;

        save.spositionY = positionPlayerDados.y;

        save.spositionZ = positionPlayerDados.z;

        save.stage = stageAtual;



        bf.Serialize(file, save);



        file.Close();

    }



    public void Load()

    {

        if (File.Exists(Path.Combine(Application.streamingAssetsPath, File_Path)))

        {

            BinaryFormatter bf = new BinaryFormatter();

            FileStream file = File.Open(Path.Combine(Application.streamingAssetsPath, File_Path), FileMode.Open);



            SaveGameData save = (SaveGameData) bf.Deserialize(file);



            savedGame = save;



            file.Close();

        }



    }



    private void OnApplicationQuit()

    {

        SceneControl();

        SaveGame();

    }



    public void NewGame()

    {

        isNewGame = true;

        LoadStage(1);

    }



    public void LoadGame()

    {

        isNewGame = false;

        Load();

        LoadStage(savedGame.stage);



    }



    public void LoadStage(int stage)

    {

        SceneManager.LoadScene(stage);

    }



}





[Serializable]

class SaveGameData

{

    public float barraStaminaSave;



    public float spositionX;

    public float spositionY;

    public float spositionZ;



    public int stage;

}



Agora estou com uma duvida. Carreguei o jogo e tudo funcionou, mas se volto ao menu principal e tento carregar o jogo novamente, não consigo. Também percebi que quando entro no jogo pela primeira vez e clico em new game ele carrega o save, sendo necessário voltar ao "main menu" e clicar novamente em new game.

arnaldojunior
Membro
Membro

PONTOS : 829
REPUTAÇÃO : 1
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Salvar dados

Mensagem por Callyde Jr em Dom Maio 06, 2018 10:52 pm

Tenta fazer um script para Salvar em cada scene e o de Load no menu
avatar
Callyde Jr
Programador

Masculino PONTOS : 2685
REPUTAÇÃO : 364
Idade : 39
Áreas de atuação : Iniciante em modelagem Blender,ScketSHUP
Progamador
Ideialista

Meu Canal
https://www.youtube.com/ch
Respeito as regras :

Ver perfil do usuário http://unnygames.000webhostapp.com/

Voltar ao Topo Ir em baixo

DÚVIDA Re: Salvar dados

Mensagem por arnaldojunior em Seg Maio 07, 2018 12:52 am

Você diz acrescentar um evento para carregar o jogo no menu de pausa, além do menu principal?
Posso até tentar, mas acho que meu problema é que ele só salva quando fecho e como o arquivo deserealiza quando carrego ele não aceita carregar novamente.
eu poderia fazer como você diz, mas serializar o save na transição e cena. Isso não daria problemas se a cena alterasse mais de uma vez?

arnaldojunior
Membro
Membro

PONTOS : 829
REPUTAÇÃO : 1
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Salvar dados

Mensagem por brunocvz em Seg Maio 14, 2018 7:19 pm

vc poderia fazer isso por PlayerPrefab, salvar em binario ou salvar em um banco de dados como o do firebase.
pensando em colocar o jogo no mercado acho que vc poderia pensar em usar o firebase por que ele já tem exemplos para vc fazer um esquema de login, importa e exporta dados,salvar pontuação e depois puxar do banco de dados entre outra coisas como analytics

brunocvz
Iniciante
Iniciante

PONTOS : 796
REPUTAÇÃO : 7
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Salvar dados

Mensagem por arnaldojunior em Seg Maio 14, 2018 11:05 pm

Eu consigo salvar, e percebi que o meu problema era na booleana de novo jogo, mas estou tendo um novo problema. o script base para salvar em binário vi em tutorial, mas acrescentei algumas funções a mais para testar cenas e guardar variáveis temporárias. Agora quando quero iniciar um novo jogo ele carrega todos os dados do save.
Código:



using System.Collections;

using System.Collections.Generic;

using UnityEngine;



public class PLAYER : MonoBehaviour {



    public static PLAYER instance;



    public delegate void PlayerDados();

    public static event PlayerDados PlayerPosicao;

    public static event PlayerDados PlayerLevel;

    public static event PlayerDados PlayerXP;



    public static float vidaPlayer = 100;

    public static int playerLVLDados =1, xpPlayerDados=0;

    public static Vector3 positionPlayer;

    private int playerLVL =1, xpPlayer = 0;    

    private int xpDoInimigo;

    public int Teste_xp_que_vira_do_inimigo;



    //--------------------------Use this Before Inicialization-----------------------------------//

    private void Awake()

    {

        if (instance == null)

        {

            instance = this;

        }

        else if (instance != null)

        {

            Destroy(gameObject);

        }

        PlayerLevel();

        PlayerXP();

    }



    public void PosicaoInicial()

    {        

        Debug.Log("Posição Inicial " + this.transform.position);

    }



    public void DadosAtual()

    {

        playerLVL = playerLVLDados;

        xpPlayer = xpPlayerDados;



    }



    void Experience()

    {

        xpDoInimigo = Teste_xp_que_vira_do_inimigo;

        xpPlayer = xpPlayer + xpDoInimigo;

        xpPlayerDados = xpPlayer;

        xpDoInimigo = 0;



        PlayerXP();



        if (xpPlayer >= (100f * playerLVL*(playerLVL+(playerLVL-1))))

        {

            playerLVL++;

            playerLVLDados = playerLVL;

            PlayerLevel();

            Debug.Log("LVL " + playerLVL);

        }



    }



    void Update()

    {

        if (Input.GetKeyDown(KeyCode.L))

        {            

            Experience();

        }



        positionPlayer = transform.position;

        if (Time.timeScale == 0)

        {            

            PlayerPosicao();

        }

    }

}
Script do player, básica apenas com alguns dados e funções para teste. A void PosicaoInicial seria invocada pelo próximo script...



Código:



using System.Collections;

using System.Collections.Generic;

using UnityEngine.UI;

using UnityEngine;

using System.Runtime.Serialization.Formatters.Binary;

using System.IO;

using System;

using UnityEngine.SceneManagement;



public class GameManager : MonoBehaviour {



    public static GameManager instance;

    private SaveGameData savedGame;

    private float barraStaminaDados;

    private const string File_Path = "saveGameData.dat";

    private bool isNewGame = false;

    private Vector3 positionPlayerDados;

    private int stageAnte,stageAtual, playerLVLdadosGM, playerXPdadosGM;

    private string stageAtualName;

    public static float valBarraStaminaInicial;





    // Use this for initialization 

    void Awake()

    {

        if (instance == null)

        {

            instance = this;

            DontDestroyOnLoad(gameObject);

        }

        else if (instance != null)

        {

            Destroy(gameObject);

        }



    }

    private void Start()

    {

        Load();

    }



    private void Update()

    {

        if(Time.timeScale==0)

        {

            stageAnte = SceneManager.GetActiveScene().buildIndex;

        }        

    }



    void OnEnable()

    {

        PLAYER.PlayerPosicao += OnPlayerPosicao;

        PLAYER.PlayerLevel += OnPlayerLevelGM;

        PLAYER.PlayerXP += OnPlayerXPGM;

        UIManager.StaminaControl += OnStaminaControl;

        SceneManager.sceneLoaded += OnStageLoad;

    }



    private void OnDisable()

    {

        PLAYER.PlayerPosicao -= OnPlayerPosicao;

        PLAYER.PlayerLevel -= OnPlayerLevelGM;

        PLAYER.PlayerXP -= OnPlayerXPGM;

        UIManager.StaminaControl -= OnStaminaControl;

        SceneManager.sceneLoaded -= OnStageLoad;

    }



    void OnPlayerXPGM()

    {

        playerXPdadosGM = PLAYER.xpPlayerDados;

    }



    void OnPlayerLevelGM()

    {

        playerLVLdadosGM = PLAYER.playerLVLDados;

    }



    void OnPlayerPosicao()

    {

        positionPlayerDados = PLAYER.positionPlayer;

    }



    void OnStaminaControl()

    {

        barraStaminaDados = UIManager.valBarraStamina;        

    }



    void OnStageLoad(Scene scene, LoadSceneMode mode)

    {



        if (isNewGame==false && savedGame!=null)

        {            

            UIManager.valBarraStamina = savedGame.barraStaminaSave;

            PLAYER.playerLVLDados = savedGame.splayerLVL;

            PLAYER.xpPlayerDados = savedGame.splayerXP;



            PLAYER.instance.transform.position = new Vector3(savedGame.spositionX, savedGame.spositionY, savedGame.spositionZ);



            //===================================Atualiza os Dados nos Respectivos Scripts=======================================================//



            PLAYER.instance.DadosAtual();

            UIManager.instance.UpdateUI();



            isNewGame = true;

        }

        else

        {



        }

    }



    void SceneControl()

    {

        stageAtualName = SceneManager.GetActiveScene().name;

        stageAtual= SceneManager.GetActiveScene().buildIndex;

        if (stageAtualName=="Main Menu")

        {

            stageAtual = stageAnte;

        }

    }



    public void SaveGame()

    {

        BinaryFormatter bf = new BinaryFormatter();

        FileStream file = File.Create(Path.Combine(Application.streamingAssetsPath, File_Path));



        SaveGameData save = new SaveGameData();

        save.barraStaminaSave = barraStaminaDados;



        save.spositionX = positionPlayerDados.x;

        save.spositionY = positionPlayerDados.y;

        save.spositionZ = positionPlayerDados.z;

        save.stage = stageAtual;

        save.splayerLVL = playerLVLdadosGM;

        save.splayerXP = playerXPdadosGM;



        bf.Serialize(file, save);



        file.Close();



    }



    public void Load()

    {

        if (File.Exists(Path.Combine(Application.streamingAssetsPath, File_Path)))

        {

            BinaryFormatter bf = new BinaryFormatter();

            FileStream file = File.Open(Path.Combine(Application.streamingAssetsPath, File_Path), FileMode.Open);



            SaveGameData save = (SaveGameData) bf.Deserialize(file);



            savedGame = save;



            file.Close();

        }



    }



    private void OnApplicationQuit()

    {

        SceneControl();

        SaveGame();

        positionPlayerDados = new Vector3(-781.5f, 1.2f, 110f);

        Debug.Log("OnApplicationQuit "+ positionPlayerDados);

    }



    public void NewGame()

    {

        PLAYER.positionPlayer = new Vector3(-780.5f, 1.2f, 110f);



        PLAYER.playerLVLDados = 1;

        PLAYER.xpPlayerDados = 0;

        valBarraStaminaInicial = 100;

        UIManager.valBarraStamina = valBarraStaminaInicial;



        PLAYER.instance.DadosAtual();

        PLAYER.instance.PosicaoInicial();

        UIManager.instance.UpdateUI();



        Debug.Log("teste");



        isNewGame = true;



        LoadStage(1);

    }





    public void LoadGame()

    {

        isNewGame = false;

        Load();

        LoadStage(savedGame.stage);



    }



    public void LoadStage(int stage)

    {

        SceneManager.LoadScene(stage);





    }



}





[Serializable]

class SaveGameData

{

    public float barraStaminaSave;



    public float spositionX;

    public float spositionY;

    public float spositionZ;



    public int stage;

    public int splayerLVL;

    public int splayerXP;

}
na função NewGame eu tentei "setar" alguns valores e testes... não funcionou. Pelos meus testes esta função só ativa o:
Código:
        isNewGame = true;

        LoadStage(1);
Este código esta muito bagunçado pois testei ativar, adicionar e desativar varias funções...
Por ultimo meu script de controle de UI... também mantem os dados salvos, não começa um jogo com novos dados.
Código:



using System.Collections;

using UnityEngine.UI;

using System.Collections.Generic;

using UnityEngine;

using System;



public class UIManager : MonoBehaviour {



    public static UIManager instance;



    public delegate void UICondicao();

    public static event UICondicao StaminaControl;





    public Slider barrastamina, barraDeVida;

    public float perda, ganho, gastStamina, ganhoStamina;

    public int QuantSede=0 , playerLVLDadosUI;

    private bool Sede=false;

    public static float valBarraStamina;





    // Use this for initialization

    void Awake()

    {

        if (instance == null)

        {

            instance = this;

        }

        else if (instance != null)

        {

            Destroy(gameObject);

        }      

    }



    private void OnEnable()

    {

        PLAYER.PlayerLevel += OnUIPlayerLevel;

    }



    private void OnDisable()

    {

        PLAYER.PlayerLevel -= OnUIPlayerLevel;

    }



    void OnUIPlayerLevel()

    {

        playerLVLDadosUI = PLAYER.playerLVLDados;

        gastStamina  = perda - playerLVLDadosUI / 200f;

        ganhoStamina = ganho + playerLVLDadosUI / 200f;

    }





    // Update is called once per frame



    void Update ()

    {





        if (Time.timeScale == 0 && valBarraStamina!=barrastamina.value)

        {

            valBarraStamina = (float)barrastamina.value;

            StaminaControl();

        }

        //===========================================Controle da Stamina===========================================//

        if (Time.timeScale > 0)

        {

            if (Input.GetKey(KeyCode.LeftShift))

            {

                if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))

                {

                    barrastamina.value -= gastStamina;

                    QuantSede++;

                }

            }



            if (Input.GetKey(KeyCode.Space))

            {

                barrastamina.value -= gastStamina / 2;

                QuantSede++;

            }



            if (Input.GetKey(KeyCode.Mouse0))

            {

                barrastamina.value -= gastStamina / 2;

                QuantSede++;

            }



            if (Sede == false)

            {

                if (barrastamina.value > 2)

                {

                    if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))

                    {

                        barrastamina.value += ganhoStamina / 3;

                    }

                    else

                    {

                        barrastamina.value += ganhoStamina;

                    }

                }

                else

                {

                    if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))

                    {

                        barrastamina.value += ganhoStamina / 20;

                    }

                    else

                    {

                        barrastamina.value += ganhoStamina;

                    }

                }

            }

            if (QuantSede >= 15000)

            {

                Sede = true;

            }

            else

            {

                Sede = false;

            }



        }



    }

    public void UpdateUI()

    {

        barrastamina.value = valBarraStamina;

        Debug.Log("Update UI" + GameManager.valBarraStaminaInicial);        

    }
}


Agradeço se alguém puder me ajudar.
Na minha cena "Main Menu" eu "setei" a função New Game e Load em seus respectivos botões.

arnaldojunior
Membro
Membro

PONTOS : 829
REPUTAÇÃO : 1
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Salvar dados

Mensagem por arnaldojunior em Qui Maio 24, 2018 6:39 am

Olá a todos, ainda continuo com esse problema em começar um novo jogo, mas fiz dezenas de testes (acho que centenas) e descobri que meu problema é no acionamento do button New Game.
como podem ver, a função new game tem várias definições, mas nenhuma é acionada.
Código:
 public void NewGame()[size=14][/size]    {[size=14][/size]        PLAYER.positionPlayer = new Vector3(-780.5f, 1.2f, 110f);[size=14][/size]        PLAYER.playerLVLDados = 1;[size=14][/size]        PLAYER.xpPlayerDados = 0;[size=14][/size]        valBarraStaminaInicial = 100;[size=14][/size]        UIManager.valBarraStamina = valBarraStaminaInicial;[size=14][/size]        PLAYER.instance.DadosAtual();[size=14][/size]        PLAYER.instance.PosicaoInicial();[size=14][/size]        UIManager.instance.UpdateUI();[size=14][/size]        Debug.Log("teste");[size=14][/size]        isNewGame = true;[size=14][/size]        LoadStage(1);
}[size=14][/size][b][/b][i][/i][u][/u][sub][/sub][sup][/sup][strike][/strike]


Somente a void LoadStage é ativada. Alguém sabe me dizer o motivo?
O interessante que o button Carregar, que possui o script:

Código:
    public void LoadGame()[size=14][/size]    {[size=14][/size]        isNewGame = false;[size=14][/size]        Load();[size=14][/size]        LoadStage(savedGame.stage);[size=14][/size]    }[b][/b][i][/i][u][/u][sub][/sub][sup][/sup][strike][/strike]
funciona perfeitamente, e ambos estão configurados da mesma maneira.
Agradeço se alguém puder me explicar esse Bug.

arnaldojunior
Membro
Membro

PONTOS : 829
REPUTAÇÃO : 1
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum