I'm trying to use Easy Save with it's AutoSave feature to store the data of a character. This is working with Opsive Saver (From pixel crushers).
Currently I've defined a custom object type to store the string that Opsive Saver generate, and restore it, here it is:
Code: Select all
namespace ES3Types
{
[UnityEngine.Scripting.Preserve]
[ES3PropertiesAttribute()]
public class ES3UserType_UCCSaver : ES3ComponentType
{
public static ES3Type Instance = null;
public ES3UserType_UCCSaver() : base(typeof(PixelCrushers.UCCSupport.UCCSaver)){ Instance = this; priority = 1;}
protected override void WriteComponent(object obj, ES3Writer writer)
{
var instance = (PixelCrushers.UCCSupport.UCCSaver)obj;
writer.WriteProperty(instance.key, instance.RecordData());
}
protected override void ReadComponent<T>(ES3Reader reader, object obj)
{
var instance = (PixelCrushers.UCCSupport.UCCSaver)obj;
var result = reader.Read<string>(instance.key);
// var result = reader.Read<System.String>(instance.key);
instance.ApplyData(result);
}
}
public class ES3UserType_UCCSaverArray : ES3ArrayType
{
public static ES3Type Instance;
public ES3UserType_UCCSaverArray() : base(typeof(PixelCrushers.UCCSupport.UCCSaver[]), ES3UserType_UCCSaver.Instance)
{
Instance = this;
}
}
}
Here is the data generated:
Code: Select all
{
"_ES3Ref" : "2039910722573824912",
"transformID" : 7047994908928221749,
"layer" : 31,
"tag" : "Player",
"name" : "Director_old",
"hideFlags" : 0,
"active" : true,
"components" : [
{
"__type" : "PixelCrushers.UCCSupport.UCCSaver,Assembly-CSharp",
"_ES3Ref" : "5284029845438797141",
"goID" : "2039910722573824912",
"Director_old" : "{\"positions\":[{\"scene\":2,\"position\":{\"x\":-27.160655975341798,\"y\":6.509002685546875,\"z\":14.586334228515625},\"rotation\":{\"x\":0.0,\"y\":0.6474076509475708,\"z\":0.0,\"w\":0.7621439695358276}}],\"attributes\":[100.0,0.0,5.0,0.0,0.0],\"attributesMin\":[0.0,0.0,0.0,0.0,0.0],\"attributesMax\":[100.0,100.0,5.0,100.0,100.0],\"items\":[],\"firstPerson\":true}"
}
]
}
Code: Select all
FormatException: Expected ':', found ','.
ES3Internal.ES3JSONReader.ReadCharIgnoreWhitespace (System.Char expectedChar) (at Assets/Easy Save 3/Scripts/Readers/ES3JSONReader.cs:374)
ES3Internal.ES3JSONReader.ReadPropertyName () (at Assets/Easy Save 3/Scripts/Readers/ES3JSONReader.cs:72)
ES3Reader.Goto (System.String key) (at Assets/Easy Save 3/Scripts/Readers/ES3Reader.cs:53)
ES3Reader.Read[T] (System.String key) (at Assets/Easy Save 3/Scripts/Readers/ES3Reader.cs:192)
ES3Types.ES3UserType_UCCSaver.ReadComponent[T] (ES3Reader reader, System.Object obj) (at Assets/Easy Save 3/Types/ES3UserType_UCCSaver.cs:25)
ES3Types.ES3ComponentType.ReadUnityObject[T] (ES3Reader reader, System.Object obj) (at Assets/Easy Save 3/Scripts/Types/ES3ComponentType.cs:36)
ES3Types.ES3UnityObjectType.ReadObject[T] (ES3Reader reader, System.Object obj) (at Assets/Easy Save 3/Scripts/Types/ES3UnityObjectType.cs:65)
ES3Types.ES3ObjectType.ReadInto[T] (ES3Reader reader, System.Object obj) (at Assets/Easy Save 3/Scripts/Types/ES3ObjectType.cs:77)
ES3Types.ES3Type_GameObject.ReadComponents (ES3Reader reader, UnityEngine.GameObject go) (at Assets/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GameObject.cs:211)
ES3Types.ES3Type_GameObject.ReadObject[T] (ES3Reader reader, System.Object obj) (at Assets/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GameObject.cs:162)
ES3Types.ES3ObjectType.ReadInto[T] (ES3Reader reader, System.Object obj) (at Assets/Easy Save 3/Scripts/Types/ES3ObjectType.cs:77)
ES3Types.ES3Type_GameObject.ReadObject[T] (ES3Reader reader) (at Assets/Easy Save 3/Scripts/Types/Unity Types/ES3Type_GameObject.cs:126)
ES3Types.ES3ObjectType.Read[T] (ES3Reader reader) (at Assets/Easy Save 3/Scripts/Types/ES3ObjectType.cs:54)
ES3Reader.ReadObject[T] (ES3Types.ES3Type type) (at Assets/Easy Save 3/Scripts/Readers/ES3Reader.cs:249)
ES3Reader.Read[T] (ES3Types.ES3Type type) (at Assets/Easy Save 3/Scripts/Readers/ES3Reader.cs:278)
ES3Types.ES3CollectionType.ReadICollection[T] (ES3Reader reader, System.Collections.Generic.ICollection`1[T] collection, ES3Types.ES3Type elementType) (at Assets/Easy Save 3/Scripts/Types/Collection Types/ES3CollectionType.cs:52)
ES3Types.ES3ArrayType.Read (ES3Reader reader) (at Assets/Easy Save 3/Scripts/Types/Collection Types/ES3ArrayType.cs:36)
ES3Reader.Read[T] (ES3Types.ES3Type type) (at Assets/Easy Save 3/Scripts/Readers/ES3Reader.cs:274)
ES3Reader.Read[T] (System.String key, T defaultValue) (at Assets/Easy Save 3/Scripts/Readers/ES3Reader.cs:212)
ES3.Load[T] (System.String key, T defaultValue, ES3Settings settings) (at Assets/Easy Save 3/Scripts/ES3.cs:443)
ES3AutoSaveMgr.Load () (at Assets/Easy Save 3/Scripts/Auto Save/ES3AutoSaveMgr.cs:85)
_Game.Scripts.SaveSystem.SaveAndLoadSlot.LoadSlot () (at Assets/_Game/Scripts/SaveSystem/SaveAndLoadSlot.cs:25)