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:
Compilando pra android
CHECKPOINT PONTO DE SALVAMENTO
[RESOLVIDO] Por que o NavMesh não está gerando um destino?
[TUTORIAL] Third Person Shooter
[RESOLVIDO] Aumentar um valor quando próximo do HitPoint
Erro No Unity
Bora entrar no Discord.. Tirando Duvidas Online..
Procuro Programador para jogo baseado em Harvest Moon - Unity (3D)
[RESOLVIDO] Unity - Erro ao Mudar de Resolução
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[TUTORIAL] Script simples para CAMA ELÁSTICA
[RESOLVIDO] Cama elastica e ventuinha que lança pra cima
[RESOLVIDO] Unity não está aceitando imagens
Ajuda com orientação de rotação de objeto
Recompensa diária
Herança Classes
[Divulgação] Projeto The World of Child
Como Criar uma nova classe com as mesmas variaveis?
Como recriar esta fisica?
[RESOLVIDO] problema movimentação horinzontal
Exclusão de arquivos desnecessários da Photon Network (PUN)
luz
Como desativar o componente IMAGE e ativar automaticamente depois de certo tempo
Alguem sabe como resolver esse problema? AI nao procurar ela mesma
[TUTORIAL] Barra de VIDA / HP contínua
Compilação pra android unity 3d
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Error depois de copilar para Android?
[TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
Inputfield 3D: alguém sabe como fazer? algum tutorial? ideia pra começar?
Rotacionar Y-axis Atraves
AnimatorOverrideController
Ajuda com Script para IA
Jogo Adaptativo a Tamanho de Telas
[PROJETO MOBILE] Defeat the Illuminatis
Curso Básico de Photoshop
[RESOLVIDO] Pra que serve o F?
[Projeto] Xuel The glory | Testem e avaliem o meu jogo medieval :3
Encriptar player prefs
COMPETIÇÃO - Melhor Jogo Indie
Ajuda em Votação para o GameJAM+
Remover limite de VSync no Android
Volante GameObject girar junto com O grafico UI Android
[TUTORIAL] Inserindo animações com Mixamo
[RESOLVIDO] Problema de renderização
[ Formação de Equipe ] Para Desenvolvimento de Jogo Mobile/PC
Streering Behaviors C#
[TUTORIAL] Salvar SCORE e substituir caso faça mais pontos.
Participe da Game Jam - Jaaj do canal Amdré Young!
Como criar um ranking online na Unity usando a PlayFab e o Facebook?
Armário Escolar (School Locker) by RafaelSquid1
Duas duvidas sobre o bake no blender
[RESOLVIDO] Pointer Influence
[RESOLVIDO] Saber o lado de um círculo toca em um objeto.
Animar collider
[TUTORIAL] Aprenda C# - Unity 3D
[TUTORIAL] AI Enemy ( Jogos de terror )
Troca de personagem em jogo 2d
Ficou legal? Minha primeira modelagem
Alguém Afim de Jogar e testar Survival Online? PC e Mobail...
[RESOLVIDO] Como fazer uma textura com elevações?
Como criar sombra em objeto transparente?
Sistema de Entidades e Componentes(ECS)
Gostaria que opinassem sobre esse cenario que fiz
Como salvar objetos que tenham uma Tag especifica (save/load)
Care Box - Disponível na Play Store
Como utilizar a Unity em equipe
Problema para atualizar App na Apple Store Itunes Connect
Command 888
Buscar o índice de um array que está dentro de outro array (JavaScript)
Problema de Compilação Na Unity
Como fazer um sistema de IK para os pés ?
Porque a luz buga na aba Game e quando eu faço a build fica normal
[RESOLVIDO] Sincronizar uma bool que não esta no player?
(Formação De Equipe) Favela Killer
Configurar NPCs
Sistema de spawn de monstros multiplayer
Como juntar animações do mixamo
Rank usando o facebook para JOGO QUIZ
Menu de selecionar carros e pistas estilo Forza
Controle Estilo GTA
Como usar o bake em uma situação como essa ?
[RESOLVIDO] Instanciar um objeto com Raycast?
[RESOLVIDO] Efeito cromado não aplica no mesh
[RESOLVIDO] Quero tirar uma dúvida!!
Opacidade / Transparência e Novas Ideias
Cores invertidas/Estranhas no PC
[RESOLVIDO] Como mudar o scale de um sprite renderer????
[TUTORIAL] Câmera seguir o mouse em 2D, com limite de distancia ao Jogador
Portas estilo gta 5
Movimento Snake Cobra
NEW FANTASY PACKS! Download Now!
Corcle (Mobile) - Um jogo simples com um nome estranho.
Como fazer este estilo no Unity 3d?
Problema do RIG do Pé Esquerdo - Animação Mixamo
[TUTORIAL] Câmera para jogo 2D ou 2.5D.
Hoje à(s) 12:10 am
Ontem à(s) 7:30 pm
Ontem à(s) 3:30 pm
Ontem à(s) 3:11 pm
Ontem à(s) 2:59 pm
Ontem à(s) 1:32 pm
Ontem à(s) 12:54 pm
Ter Ago 14, 2018 8:08 pm
Ter Ago 14, 2018 3:15 pm
Ter Ago 14, 2018 10:07 am
Seg Ago 13, 2018 9:46 pm
Seg Ago 13, 2018 8:57 pm
Seg Ago 13, 2018 4:52 pm
Seg Ago 13, 2018 10:09 am
Seg Ago 13, 2018 9:17 am
Seg Ago 13, 2018 9:05 am
Seg Ago 13, 2018 8:50 am
Dom Ago 12, 2018 10:53 pm
Dom Ago 12, 2018 4:43 pm
Dom Ago 12, 2018 4:15 pm
Dom Ago 12, 2018 3:47 pm
Dom Ago 12, 2018 3:07 pm
Sab Ago 11, 2018 4:02 pm
Sab Ago 11, 2018 11:13 am
Sex Ago 10, 2018 7:37 pm
Sex Ago 10, 2018 12:00 pm
Qui Ago 09, 2018 4:27 pm
Qui Ago 09, 2018 4:26 pm
Qui Ago 09, 2018 4:26 pm
Qui Ago 09, 2018 3:52 pm
Qui Ago 09, 2018 12:52 pm
Qui Ago 09, 2018 1:21 am
Qui Ago 09, 2018 1:17 am
Qui Ago 09, 2018 1:08 am
Qua Ago 08, 2018 11:57 pm
Qua Ago 08, 2018 10:59 pm
Qua Ago 08, 2018 8:17 pm
Qua Ago 08, 2018 8:05 pm
Qua Ago 08, 2018 7:35 pm
Qua Ago 08, 2018 6:00 pm
Qua Ago 08, 2018 3:14 pm
Qua Ago 08, 2018 11:54 am
Ter Ago 07, 2018 11:34 pm
Ter Ago 07, 2018 9:55 pm
Ter Ago 07, 2018 7:28 pm
Ter Ago 07, 2018 7:19 pm
Ter Ago 07, 2018 6:58 pm
Ter Ago 07, 2018 9:57 am
Ter Ago 07, 2018 1:20 am
Seg Ago 06, 2018 7:36 pm
Seg Ago 06, 2018 7:29 pm
Dom Ago 05, 2018 11:59 pm
Dom Ago 05, 2018 1:29 pm
Dom Ago 05, 2018 9:34 am
Sab Ago 04, 2018 3:09 pm
Sab Ago 04, 2018 11:47 am
Sab Ago 04, 2018 10:59 am
Sab Ago 04, 2018 9:23 am
Sab Ago 04, 2018 12:43 am
Sex Ago 03, 2018 11:43 pm
Sex Ago 03, 2018 11:38 pm
Sex Ago 03, 2018 10:21 pm
Sex Ago 03, 2018 10:14 pm
Sex Ago 03, 2018 8:37 pm
Sex Ago 03, 2018 5:26 pm
Sex Ago 03, 2018 4:41 pm
Sex Ago 03, 2018 12:35 pm
Sex Ago 03, 2018 12:24 pm
Qui Ago 02, 2018 10:33 pm
Qui Ago 02, 2018 8:31 pm
Qui Ago 02, 2018 8:10 pm
Qui Ago 02, 2018 5:35 pm
Qui Ago 02, 2018 5:01 pm
Qui Ago 02, 2018 4:53 pm
Qua Ago 01, 2018 9:45 pm
Qua Ago 01, 2018 7:44 pm
Qua Ago 01, 2018 5:40 pm
Qua Ago 01, 2018 4:52 pm
Qua Ago 01, 2018 12:02 pm
Qua Ago 01, 2018 8:51 am
Qua Ago 01, 2018 8:33 am
Ter Jul 31, 2018 8:00 pm
Ter Jul 31, 2018 6:35 pm
Ter Jul 31, 2018 5:09 pm
Ter Jul 31, 2018 2:39 pm
Seg Jul 30, 2018 11:21 pm
Seg Jul 30, 2018 11:06 pm
Seg Jul 30, 2018 10:35 pm
Seg Jul 30, 2018 9:17 pm
Seg Jul 30, 2018 7:54 pm
Seg Jul 30, 2018 7:53 pm
Seg Jul 30, 2018 7:49 pm
Seg Jul 30, 2018 4:29 pm
Seg Jul 30, 2018 3:09 pm
Seg Jul 30, 2018 2:06 pm
Seg Jul 30, 2018 2:02 pm
Seg Jul 30, 2018 12:57 pm
Seg Jul 30, 2018 11:15 am
Seg Jul 30, 2018 10:57 am
niao
NotoriousDev
loganout
Phph09
NotoriousDev
NotoriousDev
loganout
NKKF
Magnatah
dstaroski
FelipeSouza11
paulo.costa0194
alisonzinhod
dstaroski
dstaroski
dstaroski
dstaroski
luKkaSs
dazentt55
NotoriousDev
NotoriousDev
diegopds
Dom3000
Dom3000
Badstane
Callyde Jr
FelipeSouza11
FelipeSouza11
FelipeSouza11
Unidade3d5
Callyde Jr
MarcosSchultz
MarcosSchultz
MarcosSchultz
Madson
Unidade3d5
Magnatah
dstaroski
dstaroski
lesgoy
zeca urubu
Ezequiel286
Gray_14
C3RB3RUS
NKKF
Gabryellx007
Phph09
sneffetsd
lucas85235
MarcosSchultz
MarcosSchultz
QueriaStarMorto
Rayllander
Callyde Jr
TioUV
NKKF
NKKF
gurgelg752
MarcosSchultz
MarcosSchultz
MarcosSchultz
guimaraf
fecirineu
LucioHenrique890
lesgoy
MarcosSchultz
Callyde Jr
Edw223
RafaelSquid1
QueriaStarMorto
natanael.olimpio
Callyde Jr
MarcosSchultz
MarcosSchultz
ruanzikaad
diegopds
Extreme Craft
zeca urubu
Daniel Dória
artplayer
Isabela
Rayllander
edugamer69
MarcosSchultz
TioUV
AdrianJps
TioUV
JohnVitor
MarcosSchultz
lesgoy
Flávio
MarcosSchultz
MarcosSchultz
Flávio
dstaroski
dstaroski
RafaelSquid1
osiasbezerra
LucioHenrique890

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 : 761
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 : 2521
REPUTAÇÃO : 345
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 : 761
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 : 2521
REPUTAÇÃO : 345
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 : 761
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 : 702
REPUTAÇÃO : 0
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 : 761
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 : 761
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