예제 #1
0
    void Update()
    {
        // When [S] key is pressed: SAVE.
        if (Input.GetKeyUp(KeyCode.S))
        {
            Debug.Log(">> I'M GOING TO SAVE SOME DATA!" + "\n");

            // Some values.

            equipment = new List <string>();
            equipment.Add("Hammer");
            equipment.Add("Knife");
            equipment.Add("Rope");

            initialLocation = new Vector3(101.5f, -30.4f, 22f);

            coins = new Dictionary <string, int>();
            coins.Add("Copper", 1200);
            coins.Add("Silver", 450);
            coins.Add("Gold", 300);

            // Simple data.

            character = "Conan";
            age       = 30;
            strenght  = 300.5f;
            has_sword = true;
            has_bow   = false;
            skills    = new int[] { 6, 10, 22, 46, 69 };

            myFile.Add("name", character);
            myFile.Add("age", age);
            myFile.Add("strenght", strenght);
            myFile.Add("has_sword", has_sword);
            myFile.Add("has_bow", has_bow);
            myFile.Add("skills_id", skills);

            // GameObject data.

            myFile.Add("equipment", equipment);
            myFile.Add("coins", coins);
            myFile.Add("initialLocation", initialLocation);
            myFile.Add("player", gameObject.transform);

            // Class data (serialization).

            items = new List <Item>();
            items.Add(new Item {
                name = "Gold", quantity = 15000
            });
            items.Add(new Item {
                name = "Darts", quantity = 24
            });
            items.Add(new Item {
                name = "Potions", quantity = 10
            });

            myFile.AddSerialized("items", items);

            // Custom Extension for managing BoxCollider

            myFile.AddCustom("collider", gameObject.GetComponent <BoxCollider>(), "BoxCollider");

            // Save all the collected data.
            // At the end of the process, stored data is cleared to free memory.

            myFile.Save();

            Debug.Log(">> Data saved in: " + myFile.GetFileName() + "\n");
            ShowData();
        }

        // When [L] key is pressed: LOAD.
        if (Input.GetKeyUp(KeyCode.L))
        {
            // Load data from file.
            if (myFile.Load())
            {
                Debug.Log(">> I'M GOING TO USE LOADED DATA!" + "\n");

                // Simple data.

                character = myFile.GetString("name");
                age       = myFile.GetInt("age");
                strenght  = myFile.GetFloat("strenght");
                has_sword = myFile.GetBool("has_sword");
                has_bow   = myFile.GetBool("has_bow");
                skills    = myFile.GetArray <int>("skills_id");

                // In this case, if 'nickname' key doesn't exist, 'user_1234' string is used.

                nickname = myFile.GetString("nickname", "user_1234");

                // GameObject data.

                equipment       = myFile.GetList <string>("equipment");
                coins           = myFile.GetDictionary <string, int>("coins");
                initialLocation = myFile.GetUnityVector3("initialLocation");

                var tr = myFile.GetUnityTransform("player");
                gameObject.transform.position   = tr.position;
                gameObject.transform.rotation   = tr.rotation;
                gameObject.transform.localScale = tr.localScale;

                // Class data (serialization).

                items = (List <Item>)myFile.GetDeserialized("items", typeof(List <Item>));

                // Custom Extension for managing BoxCollider.

                var bc = myFile.GetCustom("collider", "BoxCollider");
                var thisBoxColllider = gameObject.GetComponent <BoxCollider>();
                thisBoxColllider.center = new Vector3 {
                    x = bc["centerX"].ToFloat(), y = bc["centerY"].ToFloat(), z = bc["centerZ"].ToFloat()
                };
                thisBoxColllider.isTrigger = bc["isTrigger"].ToBool();

                // Loaded data has been used as needed.
                // Stored data is manually cleared to free memory.

                myFile.Dispose();

                Debug.Log(">> Data loaded from: " + myFile.GetFileName() + "\n");
                ShowData();
            }
        }

        // When [A] key is pressed: APPEND.
        if (Input.GetKeyUp(KeyCode.A))
        {
            // Simple data.

            myFile.Add("nickname", "The Warrior");
            myFile.Add("age", 32);

            // Append this data to the current file content.
            // 'nickname' key is new, so its value is added to the file.
            // 'age' key already exists, so its current value is updated with this new one.

            myFile.Append();

            Debug.Log(">> New data added to: " + myFile.GetFileName() + "\n");
            Debug.Log(">> Age value updated to 32." + "\n");
            Debug.Log(">> Added nickname." + "\n");
        }

        // When [Del] key is pressed: FILE DELETE.
        if (Input.GetKeyUp(KeyCode.Delete))
        {
            // Delete this file.
            // This method clears stored data as well.

            myFile.Delete();

            Debug.Log(">> The file has been deleted." + "\n");
        }

        // When [T] key is pressed: SAVING AND LOADING DATA TEST.
        if (Input.GetKeyUp(KeyCode.T))
        {
            // Perform a test of writing and loading data.
            // -------------------------------------------

            myFile.Delete();

            // Add some values to the internal storage for saving and loading test.

            equipment = new List <string>();
            equipment.Add("Hammer");
            equipment.Add("Knife");
            equipment.Add("Rope");

            initialLocation = new Vector3(101.5f, -30.4f, 22f);

            character = "Conan";
            age       = 30;
            strenght  = 300.5f;
            has_sword = true;
            has_bow   = false;

            items = new List <Item>();
            items.Add(new Item {
                name = "Gold", quantity = 15000
            });
            items.Add(new Item {
                name = "Darts", quantity = 24
            });
            items.Add(new Item {
                name = "Potions", quantity = 10
            });

            myFile.Add("name", character);
            myFile.Add("age", age);
            myFile.Add("strenght", strenght);
            myFile.Add("has_sword", has_sword);
            myFile.Add("has_bow", has_bow);

            myFile.Add("equipment", equipment);
            myFile.Add("initialLocation", initialLocation);
            myFile.Add("player", gameObject.transform);

            myFile.AddSerialized("items", items);

            myFile.AddCustom("collider", gameObject.GetComponent <BoxCollider>(), "BoxCollider");

            // Test

            if (myFile.TestDataSaveLoad())
            {
                Debug.Log("<color=green>GOOD!</color>\n");
            }
            else
            {
                Debug.Log("<color=red>OPS! SOMETHING WENT WRONG!</color>\n");
            }
        }
    }