Noticias

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

el playerprefs que he creado no guarda

Iniciado por unOOld, Mayo 26, 2016, 06:37:49 PM

Tema anterior - Siguiente tema
estoy creando una novela visual y he creado un playerprefs para que guarde instantaneamente la escena donde estoy y luego poder cargarla undiendo el boton load en otra escena y funciona perfectamente!, el problema es que realice otros playerprefs para guardarr el dialogo la pose la posicion del personaje y lo configure para que cada vez que se haga click para pasar al siguiente dialogo se guarde todo lo anterior dicho y esto ayudara que cuando se unda el load no solo muestre la escena donde quedo el jugador sino el dialogo exacto en el que quedo, el problema es que por alguna razon no sirve!!, al undir el load solo me carga la escena y no el dialogo exacto donde quedo el personaje, no entiendo que estoy haciendo mal y agradeceria muchisimo su ayuda 
 
GRACIAS POR LEER 
 
pd = LA PARTE DEL SAVE Y LOAD COMIENZA DESDE EL void OnGUI () 
 
 
 

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
 
public class DialogueManager : MonoBehaviour
{
    public DialogueParser parser;
 
    public GameObject textbox;
    public string dialogue, characterName;
    public int lineNum;
    int pose;
    public string position;
    string[] options;
    public bool playerTalking;
    List<Button> buttons = new List<Button>();
    public Text dialogueBox;
    public Text nameBox;
    public GameObject choiceBox;
    static public int level;
    // Use this for initialization
    void Start()
    {
        dialogue = "";
        characterName = "";
        pose = 0;
        position = "L";
        playerTalking = false;
        parser = GameObject.Find("DialogueParser").GetComponent<DialogueParser>();
        lineNum = 0;
    }
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0) && playerTalking == false)
        {
            ShowDialogue();
            lineNum++;
        }
        UpdateUI();
    }
    public void ShowDialogue()
    {
        ResetImages();
        ParseLine();
    }
    void UpdateUI()
    {
        if (!playerTalking)
        {
            ClearButtons();
        }
        dialogueBox.text = dialogue;
        nameBox.text = characterName;
    }
    void ClearButtons()
    {
        for (int i = 0; i < buttons.Count; i++)
        {
            print("Clearing buttons");
            Button b = buttons;
            buttons.Remove(b);
            Destroy(b.gameObject);
        }
    }
    public void ParseLine()
    {
        if (parser.GetName(lineNum) != "Player")
        {
            playerTalking = false;
            characterName = parser.GetName(lineNum);
            dialogue = parser.GetContent(lineNum);
            pose = parser.GetPose(lineNum);
            position = parser.GetPosition(lineNum);
            DisplayImages();
        }
        else {
            playerTalking = true;
            characterName = "";
            dialogue = "";
            pose = 0;
            position = "";
            options = parser.GetOptions(lineNum);
            CreateButtons();
        }
    }
    void CreateButtons()
    {
        for (int i = 0; i < options.Length; i++)
        {
            GameObject button = (GameObject)Instantiate(choiceBox);
            Button b = button.GetComponent<Button>();
            ChoiceButton cb = button.GetComponent<ChoiceButton>();
            cb.SetText(options.Split(':')[0]);
            cb.option = options.Split(':')[1];
            cb.box = this;
            b.transform.SetParent(this.transform);
            b.transform.localPosition = new Vector3(0, -25 + (i * 50));
            b.transform.localScale = new Vector3(1, 1, 1);
            buttons.Add(b);
        }
    }
    void ResetImages()
    {
        if (characterName != "")
        {
            GameObject character = GameObject.Find(characterName);
            SpriteRenderer currSprite = character.GetComponent<SpriteRenderer>();
            currSprite.sprite = null;
        }
    }
    void DisplayImages()
    {
        if (characterName != "")
        {
            GameObject character = GameObject.Find(characterName);
            SetSpritePositions(character);
            SpriteRenderer currSprite = character.GetComponent<SpriteRenderer>();
            currSprite.sprite = character.GetComponent<Character>().characterPoses[pose];
        }
    }
 
    void SetSpritePositions(GameObject spriteObj)
    {
        if (position == "L")
        {
            spriteObj.transform.position = new Vector3(-6, -2, 2);
            PlayerPrefs.GetFloat("x", transform.position.x);
            PlayerPrefs.GetFloat("y", transform.position.y);
            PlayerPrefs.GetFloat("z", transform.position.z);
        }
        else if (position == "R")
        {
            spriteObj.transform.position = new Vector3(6, -2, 2);
            PlayerPrefs.GetFloat("x", transform.position.x);
            PlayerPrefs.GetFloat("y", transform.position.y);
            PlayerPrefs.GetFloat("z", transform.position.z);
        }
        else if (position == "C")
        {
            spriteObj.transform.position = new Vector3(1, -2, 2);
        }
        else if (characterName == "")
        {
            spriteObj.transform.position = new Vector3(1, -2, 2);
        }
 
        spriteObj.transform.position = new Vector3(spriteObj.transform.position.x, spriteObj.transform.position.y, 0);
    }
    public void OnGUI()
    {
        if (SceneManager.GetActiveScene().name == "Scene1")
        {
            if (Input.GetMouseButtonDown(0))
            {
                PlayerPrefs.SetString("dialogo", dialogue);
                PlayerPrefs.SetString("name", characterName);
                PlayerPrefs.SetString("position", position);
                PlayerPrefs.SetInt("pose", pose);
                PlayerPrefs.SetInt("line", lineNum);
                lineNum++;
               
               
 
                PlayerPrefs.Save();
                Debug.Log("save");
            }
            level = 1;
            PlayerPrefs.SetInt("level", level);
            PlayerPrefs.Save();
            Debug.Log("guardado" + level);
        }
        if (SceneManager.GetActiveScene().name == "Scene3")
        {
            level = 3;
            PlayerPrefs.SetInt("level", level);
            PlayerPrefs.Save();
            Debug.Log("guardado" + level);
        }
 
        if (SceneManager.GetActiveScene().name == "Scene2")
        {
            bool botton = GUI.Button(new Rect(200, 80, 80, 50), "cargar");
            if (botton)
            {
                level = PlayerPrefs.GetInt("level");
                if (level == 1)
                {
                    SceneManager.LoadScene("Scene1");
                    transform.position = new Vector3(PlayerPrefs.GetFloat("x"), PlayerPrefs.GetFloat("y"), PlayerPrefs.GetFloat("z"));
                    transform.position = new Vector3(transform.position.x + 1, transform.position.y, transform.position.z);
                    dialogue = PlayerPrefs.GetString("dialogo");
                    characterName = PlayerPrefs.GetString("name");
                    position = PlayerPrefs.GetString("position");
                    pose = PlayerPrefs.GetInt("pose");
                    lineNum = PlayerPrefs.GetInt("line");
                    lineNum++;
                   
 
                }
            }
        }
    }
}

 
 

Etiquetas: