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:
PlayerPrefs??
Ciclo de dia e noite com sync no multiplayer
Reproduzir animação com tecla?
Modelo importado para Unity com os Pés tortos .
[TUTORIAL] Criando um simples Multiplayer [UNITY 5]
editor de imagem para perfil
Rotacionar player no eixo Y da camera
erro com carregamento de dados
facebook login
Mirar em jogo de fps igual COD, Battlefield e outros
Quando o inimigo ataca todos os inimigos ativam a animação
[TUTORIAL] Acessar nomes de arquivos diretamente da pasta
[TUTORIAL] Como desenhar no Unity.
Objeto ter a mesma rotação que outro em apenas um eixo
Sistema De Marchas para Veiculos
[RESOLVIDO] Pegar o meu ping/latencia (Unet)
Animação com mão fechada
Alguém pode me dizer como usar as texturas,Normal map,Occlusion...
Começar em Game Design / Design
Material rosa no HDRender Pipeline como resolvo isso
Instanciate objeto lado a lado
[Duvida] movimentação de nave
[RESOLVIDO] Usando o SetActive para reativar um GameObject, ajuda!
Flamehead MMORPG Indie
erro de java
[TUTORIAL] Desenvolvendo um jogo de quebra-cabeças
[TUTORIAL] Salvar dados com playerprefs facilmente.
[RESOLVIDO] Grafico quadriculado?
duvida com asset store
[TUTORIAL] Assinando um Apk e dicas de instalação e configurações
Como fazer um sistema para conectar objetos?
[RESOLVIDO] Unity sem som
Erro ao tentar compilar para Android
Como iniciar uma animação atraves de um clique em um objeto?
Error ao Gerar a KeyStore do Apk Android
Participe da Game Jam - Jaaj do canal Amdré Young!
[JOGO MOBILE] Defeat the Illuminatis
Alguém sabe como posso aplicar a movimentação agachado?!
Script de Spawn Aleatório
Sugestão para o Fórum - "Área Avançada"
(NavMesh) Objeto "Deslizando"
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Alguém conhece algum bom tutorial para aprender Algoritmo genético em C# ?
Mudar cor de area
tela branca ao iniciar videoplayer
COMO FAÇO O SISTEMA DE CHUVA ESTILO ETS2 COM GOTAS NO PARA BRISA?
COMO FAZER SISTEMA DE BHOP ESTILO CS ? (BUNNY HOP)
A Arma mudar de posição de acordo coma movimentação
[PEDIDO] Rig Simples para esse modelo.
[TUTORIAL] Acionar a vibração do dispositivo
[TUTORIAL] CONFIGURANDO O UNITY PARA COMPILAR PARA ANDROID
Animação no movimento do mouse
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[RESOLVIDO] Colisor
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
[RESOLVIDO] Como faço um limitador de tiros por distância?
[RESOLVIDO] Mudar a proporção
[RESOLVIDO] Vuforia bug
Objetos (itens) pegos na cena anterior não são destruídos quando volta para ela
Codigo em Python para colocar Imagens em POT (Power Of Two) e .exe
[RESOLVIDO] Error depois de copilar para Android?
[JOGO ANDROID] PLANET DEFENSE
Sistema de IAP Paypal ou parecido
[RESOLVIDO] JOGO SAINDO (ANDROID)
{Equipe} Programador que tenha interesse de participar de uma JAM.
Como fazer Sistema Dia e Noite Segui o sistema de Hora
fazer script pegar arquivo de som, porem o som sera colocado apos a build...
[RESOLVIDO] Mover Plataforma
Formação de Equipe ( Favela Killer)
[TUTORIAL] Escolher a quantos FPS (fixos) o seu jogo deverá rodar.
[Devlog] Lost in the world (1.2_beta)
AJUDA COM SCRIPT DE SISTEMA QTE
Tilesets de Floresta em Pixel Art
[RESOLVIDO] Sistema de login
(UNITY 3D) Mesh Splitter - Como separar uma Mesh em multiplos Game Objects?
Como fazer um sistema de compra de itens?
[JOGO] Tetris em Unity - Para tutorial
Modulo Xbox One
[RESOLVIDO] Pegar e Jogar armas no chão (estilo CS 1.6)
[RESOLVIDO] Como apagar parte da grama do terreno para fazer uma calçada?
[RESOLVIDO] Erro ao Copilar: Bug no personagem.
[Opinião] 2d ou 3d?
Como é feito esse efeito?
Teaser 2 do meu jogo
Shader com efeito de dissolução
[TUTORIAL] Geração de Mesh procedural (estilo Minecraft)
[RESOLVIDO] Erro no Baú
Problema ao mudar sprite entre objetos por conta do uso de joystick
Unity 3d TELA PRETA
[Duvida] Como chamar uma void criada por mim, apenas em determinados momentos.
Corcle (Mobile) - Um jogo simples com um nome estranho.
Bomb Battle Jogo Online Em Desenvolvimento
Ajuda com Visual Studio e MonoDevelop
[RESOLVIDO] Bug o material fica preto
[RESOLVIDO] Error para copilar para Android?
Como colocar um botao do teclado na UI exemplo botao "e"?
[RESOLVIDO] Destruir Mesh na Unity
Destruição de Polígonos
[RESOLVIDO] ATIVAR E DESATIVAR OBJETO PRESSIONANDO BOTÃO
Hoje à(s) 5:03 am
Ontem à(s) 11:23 pm
Ontem à(s) 9:51 pm
Ontem à(s) 6:36 pm
Ontem à(s) 6:18 pm
Ontem à(s) 12:04 pm
Ontem à(s) 11:57 am
Ontem à(s) 10:51 am
Ontem à(s) 10:46 am
Ontem à(s) 8:57 am
Dom Jan 20, 2019 6:32 pm
Dom Jan 20, 2019 6:14 pm
Dom Jan 20, 2019 5:33 pm
Dom Jan 20, 2019 1:46 pm
Dom Jan 20, 2019 4:26 am
Sab Jan 19, 2019 4:48 pm
Sab Jan 19, 2019 4:30 pm
Sab Jan 19, 2019 8:26 am
Sab Jan 19, 2019 3:45 am
Qui Jan 17, 2019 9:23 pm
Qui Jan 17, 2019 7:10 pm
Qui Jan 17, 2019 2:24 am
Qui Jan 17, 2019 1:48 am
Qui Jan 17, 2019 1:28 am
Qua Jan 16, 2019 6:28 pm
Qua Jan 16, 2019 11:35 am
Qua Jan 16, 2019 9:30 am
Ter Jan 15, 2019 10:57 pm
Ter Jan 15, 2019 9:51 pm
Ter Jan 15, 2019 8:20 pm
Ter Jan 15, 2019 5:22 pm
Ter Jan 15, 2019 4:09 pm
Ter Jan 15, 2019 3:50 pm
Ter Jan 15, 2019 2:06 pm
Ter Jan 15, 2019 1:50 pm
Ter Jan 15, 2019 12:26 pm
Ter Jan 15, 2019 10:49 am
Ter Jan 15, 2019 3:27 am
Ter Jan 15, 2019 3:23 am
Ter Jan 15, 2019 3:19 am
Ter Jan 15, 2019 3:15 am
Ter Jan 15, 2019 3:13 am
Ter Jan 15, 2019 3:06 am
Ter Jan 15, 2019 3:04 am
Ter Jan 15, 2019 2:58 am
Ter Jan 15, 2019 2:47 am
Ter Jan 15, 2019 2:39 am
Seg Jan 14, 2019 6:58 pm
Seg Jan 14, 2019 5:54 pm
Seg Jan 14, 2019 2:20 pm
Seg Jan 14, 2019 7:28 am
Dom Jan 13, 2019 6:19 pm
Dom Jan 13, 2019 9:52 am
Sab Jan 12, 2019 8:10 pm
Sab Jan 12, 2019 4:08 pm
Sab Jan 12, 2019 2:41 pm
Sex Jan 11, 2019 10:28 pm
Sex Jan 11, 2019 8:41 pm
Sex Jan 11, 2019 8:31 pm
Sex Jan 11, 2019 12:11 pm
Sex Jan 11, 2019 7:33 am
Sex Jan 11, 2019 2:18 am
Qui Jan 10, 2019 1:04 pm
Qui Jan 10, 2019 12:58 pm
Qui Jan 10, 2019 12:50 pm
Qui Jan 10, 2019 9:23 am
Qua Jan 09, 2019 9:33 pm
Qua Jan 09, 2019 2:47 am
Qua Jan 09, 2019 12:17 am
Qua Jan 09, 2019 12:02 am
Ter Jan 08, 2019 10:24 pm
Ter Jan 08, 2019 5:00 pm
Ter Jan 08, 2019 3:51 pm
Seg Jan 07, 2019 10:42 pm
Seg Jan 07, 2019 10:26 am
Seg Jan 07, 2019 12:43 am
Dom Jan 06, 2019 5:16 pm
Dom Jan 06, 2019 2:22 pm
Sex Jan 04, 2019 3:15 pm
Sex Jan 04, 2019 2:29 pm
Sex Jan 04, 2019 2:25 pm
Sex Jan 04, 2019 12:38 pm
Qui Jan 03, 2019 12:35 am
Qua Jan 02, 2019 9:46 pm
Qua Jan 02, 2019 8:56 pm
Qua Jan 02, 2019 6:48 pm
Qua Jan 02, 2019 5:32 pm
Qua Jan 02, 2019 2:34 pm
Qua Jan 02, 2019 11:17 am
Seg Dez 31, 2018 6:23 pm
Seg Dez 31, 2018 5:53 pm
Seg Dez 31, 2018 11:29 am
Seg Dez 31, 2018 12:26 am
Dom Dez 30, 2018 9:45 pm
Dom Dez 30, 2018 8:53 pm
Dom Dez 30, 2018 3:15 pm
Dom Dez 30, 2018 12:49 pm
Dom Dez 30, 2018 12:46 pm
Sab Dez 29, 2018 4:06 pm
speedluk
AnderGames
heitor
SERGIOCS
Weslley
Zack2
francisco barroso
Zack2
Zack2
CaioItz
Phph09
NKKF
vitorhugo
Daniel Pires da Silva
Madness
luiz12345
Zack2
glauco
Joshuaaaa
MarcosSchultz
MayLeone
MarcosSchultz
bielTuvel
Skurb
zZAndersonZz
MayLeone
dstaroski
heitor
MarcosSchultz
rafaelllsd
henriquegames501
Daniel Dória
dstaroski
dstaroski
Duarte
NKKF
dstaroski
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
dstaroski
BRGC
Callyde Jr
Callyde Jr
TecnoGames
dstaroski
MayLeone
NKKF
bielTuvel
Priste_Hell
Callyde Jr
Wanderli
Andeton
Callyde Jr
MateusPignatti
Callyde Jr
NoobZ
AladoAlan
francisco barroso
luiz12345
speedluk
zeca urubu
Rafal
NKKF
Diego Felix
ismarspn
Zack2
Dom3000
henriquegames501
conceptfac
guimaraf
lhm
EricKBMS
5pntozero
Daniel Dória
Madness
Patrick
AnderGames
kalango studios games
EricKBMS
francisco barroso
dstaroski
MayLeone
PauloFR
glauco
francisco barroso
Dom3000
Callyde Jr
Callyde Jr
vitorhugo
vitorhugo
Diego Felix

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 : 920
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 : 2820
REPUTAÇÃO : 384
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 : 920
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 : 2820
REPUTAÇÃO : 384
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 : 920
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 : 883
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 : 920
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 : 920
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