Playmaker Forum
PlayMaker Help & Tips => PlayMaker Help => Topic started by: treborjones on January 30, 2019, 06:41:05 PM
-
I've just started trying to use Array maker with Easy Save 3 and have managed
simple saving and loading of a float variable successfully, hurrah! :-)
I'm now trying to save an array list of gameobjects but I'm getting an
error and not sure if I'm going about it in the right way. (error at the bottom of this post)
I have a Playmaker Array list proxy object that I use to save the players
deck of units, these units are saved in the array are prefabs.
Using Array Maker functionality, I can swap two cards 'Prefabs' between an
AvailableCards deck to a PlayerDeck Array. I was hoping to use Easy Save
to save and load the state of those array lists - so the players hand is
reloaded on return to that screen.
I've tried a simple setup of Array List Save/Load but get the error below.
Is there a step I'm missing? Or am I going about this in the wrong way?
Any help gratefully received! :-)
Bob.
PlayerDeck : PlayerDeck : LoadArray : ES3ArraylistLoad :
System.FormatException: Expected '[' or "null", found ','.
at ES3Internal.ES3JSONReader.ReadNullOrCharIgnoreWhitespace (Char
expectedChar) [0x000b0] in /Users/Bob/Dev/Dogs vs Cats
2018/Assets/Plugins/Easy Save 3/Scripts/Readers/ES3JSONReader.cs:390
at ES3Internal.ES3JSONReader.StartReadCollection () [0x00004] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Readers/ES3JSONReader.cs:157
at ES3Types.ES3ArrayType.Read (.ES3Reader reader) [0x00008] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Types/Collection Types/ES3ArrayType.cs:49
at ES3Reader.Read[Vector2[]] (ES3Types.ES3Type type) [0x00057] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Readers/ES3Reader.cs:240
at ES3Types.ES3Type_PolygonCollider2D.ReadComponent[Object] (.ES3Reader
reader, System.Object obj) [0x0011a] in /Users/Bob/Dev/Dogs vs Cats
2018/Assets/Plugins/Easy Save 3/Scripts/Types/Unity Types/Component
Types/ES3Type_PolygonCollider2D.cs:49
at ES3Types.ES3ComponentType.ReadObject[Object] (.ES3Reader reader)
[0x00190] in /Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Types/ES3ComponentType.cs:92
at ES3Types.ES3ObjectType.Read[Object] (.ES3Reader reader) [0x0004a] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Types/ES3ObjectType.cs:40
at ES3Types.ES3ObjectType.Read[Object] (.ES3Reader reader) [0x00028] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Types/ES3ObjectType.cs:34
at ES3Reader.ReadObject[Object] (ES3Types.ES3Type type) [0x0001d] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Readers/ES3Reader.cs:215
at ES3Reader.Read[Object] (ES3Types.ES3Type type) [0x0008b] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Readers/ES3Reader.cs:244
at ES3Types.ES3ArrayType.Read (.ES3Reader reader) [0x00033] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Types/Collection Types/ES3ArrayType.cs:57
at ES3Reader.Read[Component[]] (ES3Types.ES3Type type) [0x00057] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Readers/ES3Reader.cs:240
at ES3Reader.Read[Component[]] () [0x00012] in /Users/Bob/Dev/Dogs vs
Cats 2018/Assets/Plugins/Easy Save 3/Scripts/Readers/ES3Reader.cs:98
at ES3Types.ES3Type_GameObject.ReadObject[Object] (.ES3Reader reader,
System.Object obj) [0x0013b] in /Users/Bob/Dev/Dogs vs Cats
2018/Assets/Plugins/Easy Save 3/Scripts/Types/Unity
Types/ES3Type_GameObject.cs:155
at ES3Types.ES3ObjectType.ReadInto[Object] (.ES3Reader reader,
System.Object obj) [0x0004a] in /Users/Bob/Dev/Dogs vs Cats
2018/Assets/Plugins/Easy Save 3/Scripts/Types/ES3ObjectType.cs:63
at ES3Types.ES3Type_GameObject.ReadObject[Object] (.ES3Reader reader)
[0x0019d] in /Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Types/Unity Types/ES3Type_GameObject.cs:125
at ES3Types.ES3ObjectType.Read[Object] (.ES3Reader reader) [0x0004a] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Types/ES3ObjectType.cs:40
at ES3Types.ES3ObjectType.Read[Object] (.ES3Reader reader) [0x00028] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Types/ES3ObjectType.cs:34
at ES3Reader.ReadObject[Object] (ES3Types.ES3Type type) [0x0001d] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Readers/ES3Reader.cs:215
at ES3Reader.Read[Object] (ES3Types.ES3Type type) [0x0008b] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Readers/ES3Reader.cs:244
at ES3Types.ES3ListType.Read (.ES3Reader reader) [0x0003e] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Types/Collection Types/ES3ListType.cs:60
at ES3Reader.Read[List`1] (ES3Types.ES3Type type) [0x00057] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Readers/ES3Reader.cs:240
at ES3Reader.Read[List`1] (System.String key) [0x00057] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/Readers/ES3Reader.cs:162
at ES3.Load[List`1] (System.String key, .ES3Settings settings) [0x0002c]
in /Users/Bob/Dev/Dogs vs Cats 2018/Assets/Plugins/Easy Save
3/Scripts/ES3.cs:266
at HutongGames.PlayMaker.Actions.ES3ArraylistLoad.Execute () [0x0007c] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/PlayMaker ArrayMaker
EasySave3/Actions/ES3ArraylistLoad.cs:68
at HutongGames.PlayMaker.Actions.ES3ArraylistLoad.Enter () [0x0003c] in
/Users/Bob/Dev/Dogs vs Cats 2018/Assets/PlayMaker ArrayMaker
EasySave3/Actions/ES3ArraylistLoad.cs:52
at ES3PlayMaker.ActionBase.OnEnter () [0x00003] in /Users/Bob/Dev/Dogs vs
Cats 2018/Assets/Plugins/Easy Save 3/PlayMaker/ES3PlayMaker.cs:34
UnityEngine.Debug:LogError(Object, Object)
HutongGames.PlayMaker.FsmLog:AddEntry(FsmLogEntry, Boolean) (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/FsmLog.cs:172)
HutongGames.PlayMaker.FsmLog:LogAction(FsmLogType, String, Boolean) (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/FsmLog.cs:361)
HutongGames.PlayMaker.FsmStateAction:LogError(String) (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/FsmStateAction.cs:280)
ES3PlayMaker.ActionBase:HandleError(String) (at Assets/Plugins/Easy Save
3/PlayMaker/ES3PlayMaker.cs:56)
ES3PlayMaker.ActionBase:OnEnter() (at Assets/Plugins/Easy Save
3/PlayMaker/ES3PlayMaker.cs:38)
HutongGames.PlayMaker.FsmState:ActivateActions(Int32) (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/FsmState.cs:205)
HutongGames.PlayMaker.FsmState:OnEnter() (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/FsmState.cs:175)
HutongGames.PlayMaker.Fsm:EnterState(FsmState) (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/Fsm.cs:2768)
HutongGames.PlayMaker.Fsm:SwitchState(FsmState) (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/Fsm.cs:2715)
HutongGames.PlayMaker.Fsm:UpdateStateChanges() (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/Fsm.cs:2643)
HutongGames.PlayMaker.Fsm:UpdateState(FsmState) (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/Fsm.cs:2784)
HutongGames.PlayMaker.Fsm:Update() (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/Classes/Fsm.cs:1995)
PlayMakerFSM:Update() (at
C:/Projects/Playmaker_1.9.0/Projects/Playmaker.source.unity/Assets/PlayMaker/PlayMakerFSM.cs:579)
-
For easy save stuff I recommend you to post in their forums. The guy is super committed and responds within hours.
https://moodkie.com/forum/index.php (https://moodkie.com/forum/index.php)
-
I did already, but he suggested I head over here! :-)
-
Hi.
I believe that objects can not be saved so you will need to use a workaround.
You cold for example have an array with all existing cards.
Then for the players deck use a int array and set the int variables corresponding to index nr of the array with all the cards.
Now you can save the int array.
if your cards have multiple values i would suggest to use xml instead.
you can use xml with datamaker.
-
Thanks for the responses.
Yeah I think I'm probably gonna have to use my brain a bit more and do something as you suggested. I probably need to do a bit more learning about Arrays and how to use them best!
I was hoping the actions ES3ArraylistLoad and ES3ArraylistSave might save the states of array list game object references. But sounds like maybe GameObjects arrays lists might not be supported in this way?
If anyone else has any info or tutorials on how these particular actions work I'd be most grateful.
Cheers all.
-
Hi,
yes, gameobject reference are tricky because they are no persistent themselves, so save the path and name of the gameobject as a string and use Find after, os use tags, etc etc.
Bye,
Jean