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 Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Mapa de um jogo
[TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
[Projeto] Line Battle
Identificar Limite de Tela
Valor Multiplica Quando Troca Cena
Sistema de um game de Vôlei de praia
Como Usar a Mesma Animação Pra Personagens Diferentes na Unity ?
Gradiente de cores
Missil perseguidor
[TUTORIAL] Photon Networking Part.2 (Conectando ao servidor)
[DUVIDA]Pergunta Aleatória
[Duvida] Controle de Terceira pessoa por JoyStick
[TUTORIAL] Loja Virtual Fácil e Grátis
Imagem Aparecer como pergunta
Dúvidas sobre aparecer imagem na tela
Mudar a visiabilidade do inputField
[Duvida] Erro em "Public Float". "Not all code paths return a value"
Procuro Equipe Para Criação de Um Jogo
(DÚVIDA) USAR O UNITY PRO SENDO QUE CRACKEADO DA BRONCA?
JOGO QUIS - Como fazer as perguntas serem aleatórias?
Botão UI - Toggle (Botão Mutar) - Como deixar ele em todas as cenas?
Como criar um sistema de Ranking simples.
Erro com textura, cor e skybox
Loja e inventario em jogo fps multiplayer.
TILEMAP NÃO FUNCIONA QUANDO ARRASTO AS SPRITES PARA TILEPALETTE
[Devlog] ZByte Defender:The Game 10/04 (Alpha Aberta) + Download
Como Fazer quiz com pergunta Aletórias no Unity-5
Fixar o objeto no chão !
Exportar animações
[TUTORIAL] Unity + PHP + Mysql (com PDO)
base para multiplayer , qual melhor método, e restrições
Scena Demorando muito Para Carregar!
[ NONAME ] Procura de pessoas interessadas
Apertar mais de um botão no UNITY
Zerar os tempos do Cronometro Unity
PHP retorno?
The Lost Blade (Em Desenvolvimento)
Spawn varios objetos
[TUTORIAL] Sistema de vida,morte,dano
Erro UNITY 5 NOTA PARA JOGO DE TERROR
Botão no Touch || saltar e tiro
SOM Duplicado unity3d
Reproduzir audio no if c## e musica continuar tocando entre cenas.
Bug com detecção de chão
Girar personagem no próprio eixo usando joystick virtual
Asset de Efeito de congelamento
Tirar seleção de Objeto na Cena
Command 888
Care Box - Disponível na Play Store
[TUTORIAL] Script de arma automatica
[____ADMINISTRAÇÃO____] Alterações IMPORTANTES no fórum.
Site de assets
" FUEL " O maior jogo do Mundo
[TUTORIAL] Compilar para Android
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
Deformação de Objetos
Itens de diferentes tamanho no inventario
[TUTORIAL] Sistema COMPLETO de câmeras
Efeito arma giratória
[TUTORIAL] Criando Plants VS Zombies (remake - Parte 1)
Como aumentar os dados de Black In do color grading do post processing via script?
[DUVIDA] Fps multiplayer
[Asset] Script Arma Completo Incluso Recuo. Incluso outros Scripts
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
Novo jogo - Astero - PlayStore
IA de Patrulha do inimigo !
Modeladores e programadores por favor.
Dúvida com jogo estilo Clash Royale
Survalways :: procuro interessados : programador/áudio
Personagem morrer ao cair da tela
Problema na configuração do Wheel Colider (para um jogo mobile)
Celular Virtual
[TUTORIAL] SISTEMA DE CHUVA COM PARTICULAS.
Sobre Coolers ( Fans )
[TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Loading cronometrado
[TUTORIAL] Unity 5 - Como criar o próprio FPS Controller
The Walker [Open - Beta 0.02v]
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
unity não quer ativar a lincense
Script SceneManager.GetActiveScene
[DÚVIDA] Como publicar um jogo na Windows Store/Loja do Windows 10?
Sistema de Compra incompleto!
Como por sistema de score em projeto Match 3 tipo Candy Crush?
Como parar um Cronometro?
Salvar dados
como fazer o corpo se mover junto com a roupa do personagem ?
sistema de dia e noite de acordo com a hora do computador.
A Unity detecta o click mouse como um touch?
Beta_Jogo (Lost and Alone)Por favor Avaliem!
Projeto em andamento! (Graficos quase realistas)
Raycast em objeto dentro de collider?
Build setting não entra
[Jogo Mobile] Alien - Lost in the space
Ajuda com cores.
[TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
[RESOLVIDO] Player Prefs perdendo dados?
[TUTORIAL] Deformar mesh com batidas (para objetos, veículos, etc)
Como fazer um corredor se fechando na unity
Hoje à(s) 12:30 am
Hoje à(s) 12:23 am
Hoje à(s) 12:23 am
Ontem à(s) 11:33 pm
Ontem à(s) 10:50 pm
Ontem à(s) 10:08 pm
Ontem à(s) 9:38 pm
Ontem à(s) 8:53 pm
Ontem à(s) 8:51 pm
Ontem à(s) 8:50 pm
Ontem à(s) 8:22 pm
Ontem à(s) 4:55 pm
Ontem à(s) 4:29 pm
Ontem à(s) 4:28 pm
Ontem à(s) 3:50 pm
Ontem à(s) 3:03 pm
Ontem à(s) 2:55 pm
Ontem à(s) 12:52 pm
Ontem à(s) 12:33 pm
Ontem à(s) 11:08 am
Ontem à(s) 10:59 am
Ter Maio 22, 2018 11:27 pm
Ter Maio 22, 2018 8:13 pm
Ter Maio 22, 2018 7:27 pm
Ter Maio 22, 2018 5:48 pm
Ter Maio 22, 2018 5:18 pm
Ter Maio 22, 2018 5:09 pm
Ter Maio 22, 2018 4:36 pm
Ter Maio 22, 2018 8:44 am
Ter Maio 22, 2018 5:56 am
Seg Maio 21, 2018 9:44 pm
Seg Maio 21, 2018 8:01 pm
Seg Maio 21, 2018 7:00 pm
Seg Maio 21, 2018 3:42 pm
Seg Maio 21, 2018 3:32 pm
Seg Maio 21, 2018 2:13 am
Dom Maio 20, 2018 8:41 pm
Dom Maio 20, 2018 8:38 pm
Dom Maio 20, 2018 7:32 pm
Dom Maio 20, 2018 6:34 pm
Dom Maio 20, 2018 6:33 pm
Dom Maio 20, 2018 3:13 pm
Dom Maio 20, 2018 2:11 pm
Dom Maio 20, 2018 1:40 pm
Dom Maio 20, 2018 1:00 pm
Dom Maio 20, 2018 12:25 pm
Dom Maio 20, 2018 12:07 pm
Dom Maio 20, 2018 9:38 am
Dom Maio 20, 2018 8:06 am
Sab Maio 19, 2018 8:06 pm
Sab Maio 19, 2018 5:40 pm
Sab Maio 19, 2018 1:34 pm
Sab Maio 19, 2018 1:06 pm
Sab Maio 19, 2018 12:13 pm
Sab Maio 19, 2018 11:10 am
Sab Maio 19, 2018 9:51 am
Sab Maio 19, 2018 6:11 am
Sab Maio 19, 2018 12:14 am
Sex Maio 18, 2018 10:49 pm
Sex Maio 18, 2018 7:12 pm
Sex Maio 18, 2018 4:55 pm
Sex Maio 18, 2018 11:06 am
Sex Maio 18, 2018 10:39 am
Sex Maio 18, 2018 10:12 am
Sex Maio 18, 2018 8:09 am
Qui Maio 17, 2018 9:51 pm
Qui Maio 17, 2018 5:53 pm
Qui Maio 17, 2018 5:49 pm
Qui Maio 17, 2018 4:49 pm
Qui Maio 17, 2018 3:55 pm
Qui Maio 17, 2018 1:19 am
Qui Maio 17, 2018 12:12 am
Qua Maio 16, 2018 6:59 pm
Qua Maio 16, 2018 11:59 am
Qua Maio 16, 2018 2:27 am
Ter Maio 15, 2018 11:41 pm
Ter Maio 15, 2018 11:36 pm
Ter Maio 15, 2018 8:38 pm
Ter Maio 15, 2018 8:23 pm
Ter Maio 15, 2018 3:37 pm
Ter Maio 15, 2018 2:43 pm
Ter Maio 15, 2018 1:57 pm
Ter Maio 15, 2018 10:04 am
Ter Maio 15, 2018 7:48 am
Ter Maio 15, 2018 1:30 am
Seg Maio 14, 2018 11:05 pm
Seg Maio 14, 2018 8:11 pm
Seg Maio 14, 2018 6:06 pm
Seg Maio 14, 2018 4:59 pm
Seg Maio 14, 2018 4:33 pm
Seg Maio 14, 2018 4:20 pm
Seg Maio 14, 2018 3:41 pm
Seg Maio 14, 2018 2:16 pm
Seg Maio 14, 2018 1:23 pm
Seg Maio 14, 2018 12:55 pm
Seg Maio 14, 2018 11:38 am
Seg Maio 14, 2018 9:42 am
Seg Maio 14, 2018 12:45 am
Dom Maio 13, 2018 9:14 pm
ruanzikaad
tony
ruanzikaad
azool
felipehobs1
isah
TioUV
Flávio
Flávio
Phph09
Rayllander
DuViDoSo
Yan
Pedro Marquesini
negoll
Phph09
felipehobs1
zeca urubu
fabriciorsz34
Rayllander
Rayllander
luansantos
Souris
MRX
RenatoMoran
Mateus2583
Rayllander
Netão
Phph09
Callyde Jr
Phph09
fabriciorsz34
ruanzikaad
Souris
Felix
Callyde Jr
ismarspn
Lteo
Callyde Jr
Rafa123
Douglas Costa Amorim
Rayllander
Rayllander
Joaopm1
Jmspp
Dom3000
Dom3000
Callyde Jr
Another Developer
Merotec32
Matrirxp
SuperGamer
Callyde Jr
Souris
francisco barroso
Lteo
Callyde Jr
MarcosSchultz
Flávio
MayLeone
YmKx
Daniel Dória
dimmuo
dstaroski
Édipo
dkrazor
ErikBreno360
RGKC
M4theuz
mafipt
zKilleD
Zack2
Callyde Jr
julioou
mateusvasco100
WesFarias
MarcosSchultz
Souris
Souris
thiagograssi
vitorhugo
gcs13
MarcosUAC
dracuno
niao
arnaldojunior
Dom3000
Johann santos
otavio00augusto
Zecandy
julioou
isah
Daniel Dória
leocc
euvictoralmeida
RamonPS
YmKx
MarcosSchultz
isah

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 : 676
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 : 2334
REPUTAÇÃO : 314
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 : 676
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 : 2334
REPUTAÇÃO : 314
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 : 676
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 : 618
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 : 676
REPUTAÇÃO : 1
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Voltar ao Topo


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