Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Guardar y cargar datos

Iniciado por kalm97, Enero 02, 2016, 07:43:04 PM

Tema anterior - Siguiente tema
Hola a todos tengo una duda un poco complicada y que no llego a entender disene este codigo para guardar y cargar datos de experiencia y funciona muy bien y ahora le instale para que me guarde en que nivel esta el jugador pero cuando inicio la partida ningun deja de funcionar el codigo entero, aqui les dejo todo el script... using UnityEngine;
using System.Collections;
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using UnityEngine.UI;public class GameControl : MonoBehaviour {    public static GameControl control;    public float experienceunos;
    public Text InputTextuno;
    public Text pointsTextuno;    public float experiencedoss;
    public Text InputTextdos;
    public Text pointsTextdos;    public float experiencetress;
    public Text InputTexttres;
    public Text pointsTexttres;     public bool uno = false;
    public bool dos = false;
    public bool tres = false;    private Player player;
    private DoorNivel dn;    void Update(){
        if (uno) {
            InputTextuno.enabled = true;
            pointsTextuno.enabled = true;
            pointsTextuno.text = ("Points :  " + experienceunos);
        } else {
            InputTextuno.enabled = false;
            pointsTextuno.enabled = false;
        }
        if (dos) {
            InputTextdos.enabled = true;
            pointsTextdos.enabled = true;
            pointsTextdos.text = ("Points :  " + experiencedoss);
        } else {
            InputTextdos.enabled = false;
            pointsTextdos.enabled = false;
        }
        if (tres) {
            InputTexttres.enabled = true;
            pointsTexttres.enabled = true;
            pointsTexttres.text = ("Points :  " + experiencetress);
        } else {
            InputTexttres.enabled = false;
            pointsTexttres.enabled = false;
        }
    }    void Start (){
        player = gameObject.GetComponent<Player> ();
        dn = gameObject.GetComponent<DoorNivel> ();
    }
        void Awake(){
        if (control == null) {
            control = this;
            DontDestroyOnLoad (gameObject);
        } else if (control != this) {
            Destroy(gameObject);
        }
    }    
    // Update is called once per frame
    void OnGUI () {
    
//        GUI.Button (new Rect (10, 40, 100, 60), "Experience: " + experience);    }
    public void Save(){
        if (uno) {
            BinaryFormatter bf = new BinaryFormatter ();
            FileStream file = File.Create (Application.persistentDataPath + "/playerInfo.dat.uno");
            PlayerData data = new PlayerData ();
//            PlayerData data1 = new PlayerData ();
            data.experienceuno = experienceunos;
//            data1.levelReacheduno = dn.levelReacheduno;
            bf.Serialize (file, data);
            file.Close ();
        }
        if (dos) {
            BinaryFormatter bf = new BinaryFormatter ();
            FileStream file = File.Create (Application.persistentDataPath + "/playerInfo.dat.dos");
            PlayerData data = new PlayerData ();
//            PlayerData data1 = new PlayerData ();
            data.experiencedos = experiencedoss;
//            data1.levelReacheddos = dn.levelReacheddos;
            bf.Serialize (file, data);
            file.Close ();
        }    }
    public void Load(){
        if (uno) {
            if (File.Exists (Application.persistentDataPath + "/playerInfo.dat.uno")) {
                BinaryFormatter bf = new BinaryFormatter ();
                FileStream file = File.Open (Application.persistentDataPath + "/playerInfo.dat.uno", FileMode.Open);
                PlayerData data = (PlayerData)bf.Deserialize (file);
//                PlayerData data1 = (PlayerData)bf.Deserialize (file);
                file.Close ();                experienceunos = data.experienceuno;
//                dn.levelReacheduno = data1.levelReacheduno;
            }        }
        if (dos) {
            if (File.Exists (Application.persistentDataPath + "/playerInfo.dat.uno")) {
                BinaryFormatter bf = new BinaryFormatter ();
                FileStream file = File.Open (Application.persistentDataPath + "/playerInfo.dat.dos", FileMode.Open);
                PlayerData data = (PlayerData)bf.Deserialize (file);
//                PlayerData data1 = (PlayerData)bf.Deserialize (file);
                file.Close ();
                
                experiencedoss = data.experiencedos;
//                dn.levelReacheddos = data1.levelReacheddos;
            }
            
        }    }}
[Serializable]
class PlayerData{
    
    public float experienceuno;
    public float experiencedos;
    public float experiencetres;
    public int levelReacheduno;
    public int levelReacheddos;
    public int levelReachedtres;
} anote en rojo el codigo que adjunte para guardar los datos de cuantos niveles paso el jugador.

El problema de esto es que en Android no te va a Funcionar, deberias buscar un poco más sobre la serialización...Descartando esto, y que el juego solo sea para PC el problema puede estar relacionado a la ruta del Archivo... Un Consejo, utilizar XML para guardar Datos..

Disculpen la demora a responder mi com***dora tiene algun virus que no me deja escribir o responder es algo extraño bueno al caso... Mi juego es de Pc no Android y  no se como usar XML use este sistema que esta arriba porque lo explican en los recursos de Unity... me podrian ayudar con el codigo o explicarme como usar XML para mi caso porque intento guardar 2 datos la experiencia y cuantos nivel a cruzado....

Etiquetas: