I'm using Unity 2019.3.2 with EasySave 3.1.4f1
I've setup my scene to use the ES3AutoSave script on 3 gameobjects in the scene. I've also setup a few ES3 types
Code: Select all
ES3Type_BoxCollider.cs
ES3Type_CapsuleCollider.cs
ES3Type_CarLeaderboardManager.cs
ES3Type_CinemachineImpulseSource.cs
ES3Type_GameObject.cs
ES3Type_LimitVelocityOverLifetimeModule.cs
ES3Type_MeshFilter.cs
ES3Type_MeshRenderer.cs
ES3Type_SphereCollider.cs
ES3Type_StudioEventEmitter.cs
ES3Type_Transform.cs
ES3Type_WCCarMPH.cs
ES3Type_colliderDisableOnY.cs
As I don't need a lot of the variables saved when I set up the types I selected them to be blank (nothing ticked) so they are set to just skip all the elements, here's an example ;
Code: Select all
using System;
using UnityEngine;
namespace ES3Types
{
[UnityEngine.Scripting.Preserve]
[ES3PropertiesAttribute()]
public class ES3Type_MeshFilter : ES3ComponentType
{
public static ES3Type Instance = null;
public ES3Type_MeshFilter() : base(typeof(UnityEngine.MeshFilter))
{
Instance = this;
}
protected override void WriteComponent(object obj, ES3Writer writer)
{
var instance = (UnityEngine.MeshFilter)obj;
}
protected override void ReadComponent<T>(ES3Reader reader, object obj)
{
var instance = (UnityEngine.MeshFilter)obj;
foreach(string propertyName in reader.Properties)
{
switch(propertyName)
{
default:
reader.Skip();
break;
}
}
}
}
public class ES3Type_MeshFilterArray : ES3ArrayType
{
public static ES3Type Instance;
public ES3Type_MeshFilterArray() : base(typeof(UnityEngine.MeshFilter[]), ES3Type_MeshFilter.Instance)
{
Instance = this;
}
}
}
Everything works fine in the editor, saving & loading on quitting and starting.
I build the project for IOS and test on an iphone 6.
Whenever I exit / quit the application I get this error
Code: Select all
NullReferenceException: Object reference not set to an instance of an object.
at ES3Writer.Write (System.Object value, ES3Types.ES3Type type, ES3+ReferenceMode memberReferenceMode) [0x00000] in <00000000000000000000000000000000>:0
at ES3Types.ES3Type_MeshRenderer.WriteComponent (System.Object obj, ES3Writer writer) [0x00000] in <00000000000000000000000000000000>:0
at ES3Types.ES3ComponentType.WriteUnityObject (System.Object obj, ES3Writer writer) [0x00000] in <00000000000000000000000000000000>:0
at ES3Types.ES3Type.WriteUsingDerivedType (System.Object obj, ES3Writer writer) [0x00000] in <00000000000000000000000000000000>:0
at ES3Types.ES3UnityObjectType.WriteObject (System.Object obj, ES3Writer writer, ES3+ReferenceMode mode) [0x00000] in <00000000000000000000000000000000>:0
at ES3Writer.Write (System.Object value, ES3Types.ES3Type type, ES3+ReferenceMode memberReferenceMode) [0x00000] in <00000000000000000000000000000000>:0
at ES3Types.ES3ListType.Write (System.Object obj, ES3Writer writer, ES3+ReferenceMode memberReferenceMode) [0x00000] in <00000000000000000000000000000000>:0
at ES3Types.ES3Type_GameObject.WriteObject (System.Object obj, ES3Writer writer, ES3+ReferenceMode mode) [0x00000] in <00000000000000000000000000000000>:0
at ES3Writer.Write (System.Object value, ES3Types.ES3Type type, ES3+ReferenceMode memberReferenceMode) [0x00000] in <00000000000000000000000000000000>:0
at ES3Types.ES3ArrayType.Write (System.Object obj, ES3Writer writer, ES3+ReferenceMode memberReferenceMode) [0x00000] in <00000000000000000000000000000000>:0
at ES3Writer.Write[T] (System.String key, System.Object value) [0x00000] in <00000000000000000000000000000000>:0
at ES3.Save[T] (System.String key, System.Object value, ES3Settings settings) [0x00000] in <00000000000000000000000000000000>:0
UnityEngine.UnhandledExceptionHandler:PrintException(String, Exception)
UnityEngine.UnhandledExceptionHandler:HandleUnhandledException(Object, UnhandledExceptionEventArgs)
System.UnhandledExceptionEventHandler:Invoke(Object, UnhandledExceptionEventArgs)
thanks in advance