예제 #1
0
        private static void SaveTemporary(SavableObject data)
        {
            string stream = JsonUtility.ToJson(data);

            PlayerPrefs.SetString(data.ToString(), stream);
            Debug.Log(data.name + " \tsaved!");
        }
    public override object Read(ES2Reader reader)
    {
        SavableObject data = new SavableObject();

        Read(reader, data);
        return(data);
    }
    public static void SaveToXML(string path)
    {
        data.gameObjectList.Clear();
        var allGameObjects = Object.FindObjectsOfType <GameObject>();

        foreach (GameObject o in allGameObjects)
        {
            SavableObject savableObject = new SavableObject();
            savableObject.name = o.name;
            savableObject.transform.position   = o.transform.position;
            savableObject.transform.rotation   = o.transform.rotation;
            savableObject.transform.localScale = o.transform.localScale;
            if (o.GetComponent <MeshFilter>())
            {
                savableObject.mesh = o.GetComponent <MeshFilter>().sharedMesh;
            }

            List <string> componentNames = new List <string>();
            var           components     = o.GetComponents(typeof(Component));
            foreach (var item in components)
            {
                componentNames.Add(item.GetType().ToString());
            }
            savableObject.components = componentNames;
            data.gameObjectList.Add(savableObject);
        }

        XmlSerializer serializer = new XmlSerializer(typeof(Data));
        FileStream    stream     = new FileStream(path, FileMode.Create);

        serializer.Serialize(stream, data);
        stream.Close();
        Debug.Log($"Save Successfully {allGameObjects.Length} objects");
    }
예제 #4
0
 public override void acceptSavableObject(SavableObject savObj)
 {
     events = new List <string>();
     for (int i = 0; i < (int)savObj.data["eventCount"]; i++)
     {
         events.Add((string)savObj.data["event" + i]);
     }
 }
예제 #5
0
    public override void acceptSavableObject(SavableObject savObj)
    {
        currentVoiceLineIndex = (int)savObj.data["currentVoiceLineIndex"];
        float playBackTime = (float)savObj.data["playBackTime"];

        setVoiceLine(currentVoiceLineIndex, playBackTime);
        lastPlayedCheckPointLineIndex = (int)savObj.data["lastPlayedCheckPointLineIndex"];
    }
예제 #6
0
        //存档控制----------------------------
        private static void SaveTemporary(SavableObject data)
        {
            //此方法将数据保存到内存,但不保存到磁盘
            data.UpdateData();
            string stream = JsonUtility.ToJson(data);

            PlayerPrefs.SetString(data.ToString(), stream);
            Debug.Log(data.name + " \tsaved!");
        }
예제 #7
0
 public void Load(SavableObject o)
 {
     using
     (
         var reader = new BinaryReader(File.Open(savePath, FileMode.Open))
     )
     {
         o.Load(new GameDataReader(reader));
     }
 }
예제 #8
0
        //VRCTS
        private void SetSavableObj(GameObject obj, string libName)
        {
            obj.AddComponent <SavableObject>();
            SavableObject savable = obj.GetComponent <SavableObject>();

            if (savable != null)
            {
                savable.lib = libName;
            }
        }
예제 #9
0
 public void Save(SavableObject o)
 {
     using
     (
         var writer = new BinaryWriter(File.Open(savePath, FileMode.Create))
     )
     {
         o.Save(new GameDataWriter(writer));
     }
 }
    public override void Write(object obj, ES2Writer writer)
    {
        SavableObject data = (SavableObject)obj;

        // Add your writer.Write calls here.
        writer.Write(data.data);
        writer.Write(data.isSpawnedObject);
        writer.Write(data.isSpawnedScript);
        writer.Write(data.scriptType);
        writer.Write(data.prefabName);
    }
    public override void Read(ES2Reader reader, object c)
    {
        SavableObject data = (SavableObject)c;

        // Add your reader.Read calls here to read the data into the object.
        data.data            = reader.ReadDictionary <System.String, System.Object>();
        data.isSpawnedObject = reader.Read <System.Boolean>();
        data.isSpawnedScript = reader.Read <System.Boolean>();
        data.scriptType      = reader.Read <System.String>();
        data.prefabName      = reader.Read <System.String>();
    }
예제 #12
0
        public static void Load(SavableObject data)
        {
            if (!PlayerPrefs.HasKey(data.ToString()))
            {
                Debug.Log("No data found for " + data.name);
                return;
            }
            string stream = PlayerPrefs.GetString(data.ToString());

            JsonUtility.FromJsonOverwrite(stream, data);
            Debug.Log(data.name + " \tloaded!");
        }
예제 #13
0
    public override SavableObject getSavableObject()
    {//2017-07-28: copied from Rigidbody2DLock.getSavableObject()
        SavableObject so      = new SavableObject(this);
        int           counter = 0;

        foreach (string str in events)
        {
            so.data.Add("event" + counter, str);
            counter++;
        }
        so.data.Add("eventCount", counter);
        return(so);
    }
예제 #14
0
    public override SavableObject getSavableObject()
    {
        SavableObject so      = new SavableObject(this);
        int           counter = 0;

        foreach (GameObjectId goId in lockHolders)
        {
            so.data.Add("gameObjectId" + counter, goId);
            counter++;
        }
        so.data.Add("gameObjectCount", counter);
        return(so);
    }
예제 #15
0
 public override void acceptSavableObject(SavableObject savObj)
 {
     lockHolders = new List <GameObjectId>();
     for (int i = 0; i < (int)savObj.data["gameObjectCount"]; i++)
     {
         lockHolders.Add((GameObjectId)savObj.data["gameObjectId" + i]);
     }
     if (lockHolders.Count > 0)
     {
         lockRB2D();
     }
     else
     {
         removeLock();
     }
 }
예제 #16
0
    /// <summary>
    /// Instantiates an instance of a prefab based on a SavableData object loaded from a binary file.
    /// </summary>
    /// <param name="data">The SavableData containing information about the object to be instantiated.</param>
    /// <returns> The instantiated gameobject. </returns>
    GameObject SpawnMyObject(SavableData data)
    {
        // Instantiate gameobject
        Vector3    pos = new Vector3(data.X, data.Y, data.Z);
        Quaternion rot = new Quaternion(data.Rx, data.Ry, data.Rz, data.Rw);
        GameObject obj = Instantiate(Resources.Load(data.Lib + "/" + data.Name), pos, rot, transform) as GameObject;

        // Add a SavableObject component to the gameobject if it does not have one so that it can be loaded/saved later on.
        SavableObject savable = obj.GetComponent <SavableObject>();

        if (savable == null)
        {
            savable = obj.AddComponent <SavableObject>();
        }
        Debug.Log("Load From Lib: " + data.Lib);
        savable.lib     = data.Lib;
        savable.objName = data.Name;
        return(obj);
    }
예제 #17
0
 public override void acceptSavableObject(SavableObject savObj)
 {
     holdThresholdScale = (float)savObj.data["holdThresholdScale"];
     tapCount           = (int)savObj.data["tapCount"];
 }
예제 #18
0
 public override void acceptSavableObject(SavableObject savObj)
 {
     integrity     = (float)savObj.data["integrity"];
     alreadyBroken = (bool)savObj.data["alreadyBroken"];
     setIntegrity(integrity);
 }
예제 #19
0
 /// <summary>
 /// 手动保存一个对象
 /// </summary>
 public static void Save(SavableObject data)
 {
     SaveTemporary(data);
     PlayerPrefs.Save();
     Debug.Log("Data saved to disc.");
 }
예제 #20
0
 /// <summary>
 /// "Load": replaces its current state with the state in the given SavableObject
 /// </summary>
 /// <param name="savObj"></param>
 public abstract void acceptSavableObject(SavableObject savObj);
 public override void acceptSavableObject(SavableObject savObj)
 {
     chargesLeft = (int)savObj.data["chargesLeft"];
     setChargesLeft(chargesLeft);
     chargeTime = (float)savObj.data["chargeTime"];
 }
예제 #22
0
 public override void acceptSavableObject(SavableObject savObj)
 {
     currentEnergyLevel = (float)savObj.data["currentEnergyLevel"];
 }
예제 #23
0
 public override void acceptSavableObject(SavableObject savObj)
 {
     prefabName = (string)savObj.data["prefabName"];
     spawnTag   = (string)savObj.data["spawnTag"];
 }
예제 #24
0
 public override void acceptSavableObject(SavableObject savObj)
 {
     cracked = (bool)savObj.data["cracked"];
     setCracked(cracked);
 }
예제 #25
0
 public override void acceptSavableObject(SavableObject savObj)
 {
 }
예제 #26
0
 public override void acceptSavableObject(SavableObject savObj)
 {
     stats["deathCount"] = Mathf.Max(stats["deathCount"], (int)savObj.data["deathCount"]);
 }
    public GameObject get(PoolableTypes objectType, Transform locationData = null, Guid parentGuid = new Guid())
    {
        List <GameObject> instanciatedGameObjectsList;

        if (disabledGameObjects.TryGetValue(objectType, out instanciatedGameObjectsList))
        {
            int lastIndex = instanciatedGameObjectsList.Count - 1;

            GameObject go = instanciatedGameObjectsList[lastIndex];
            instanciatedGameObjectsList.RemoveAt(lastIndex);
            activeGameObjects.Add(go);
            IPoolableObject ipo = go.GetComponent <IPoolableObject>();

            if (ipo == null)
            {
                ipo = go.GetComponentInChildren <IPoolableObject>();
            }

            if (locationData != null)
            {
                go.transform.position = locationData.position;
                go.transform.rotation = locationData.rotation;
                go.transform.forward  = locationData.forward;
            }

            ipo.OnPoolCreation();

            if (parentGuid != Guid.Empty)
            {
                Guid objectId = Guid.Empty;
                Guid getId;

                Bot botScript = go.GetComponent <Bot>();
                if (botScript != null)
                {
                    objectId = botScript.Id;
                }
                else
                {
                    SavableObject savableObjectScript = go.GetComponent <SavableObject>();
                    if (savableObjectScript != null)
                    {
                        objectId = savableObjectScript.Id;
                    }
                }

                if (objectId != Guid.Empty &&
                    !GameObjectStateManager.Instance.ParentIds.TryGetValue(objectId, out getId))
                {
                    GameObjectStateManager.Instance.ParentIds.Add(objectId, parentGuid);
                }
            }

            go.SetActive(true);

            if (objectType == PoolableTypes.Enemy)
            {
                enemyList.Add(go);
            }
            else if (objectType == PoolableTypes.PlayerBot)
            {
                playerBotList.Add(go);
            }

            return(go);
        }

        return(null);
    }
예제 #28
0
 public override void acceptSavableObject(SavableObject savObj)
 {
     range  = (float)savObj.data["range"];
     energy = (float)savObj.data["energy"];
     init(range, energy);
 }