@@ -13,18 +13,18 @@ public class SaveLoadManager : ScriptableObject
13
13
{
14
14
[ Header ( "Settings" ) , SerializeField ] private string defaultFolder = "SaveData" ;
15
15
public string DefaultFolder => defaultFolder ;
16
-
16
+
17
17
[ SerializeField ] private string baseFolder = "GameData" ;
18
18
public string BaseFolder => baseFolder ;
19
-
19
+
20
20
[ SerializeField ] private SerializationMethodType saveMethod = SerializationMethodType . Default ;
21
21
22
22
[ Header ( "Encryption" ) , SerializeField ] protected string key = string . Empty ;
23
23
public string Key => key ;
24
-
24
+
25
25
[ SerializeField ] protected string salt = string . Empty ;
26
26
public string Salt => salt ;
27
-
27
+
28
28
private Dictionary < SerializationMethodType , ISerializationMethod > _methods ;
29
29
30
30
private void OnEnable ( )
@@ -53,10 +53,10 @@ public static SaveLoadManager Create(string baseFolder, string defaultFolder, Se
53
53
instance . key = key ;
54
54
instance . salt = salt ;
55
55
instance . saveMethod = saveMethod ;
56
-
56
+
57
57
return instance ;
58
58
}
59
-
59
+
60
60
/// <summary>
61
61
/// Save an object to disk
62
62
/// </summary>
@@ -77,14 +77,15 @@ public void Save(object obj, string filename, string folder = null)
77
77
/// Gets the list of save files that have been created
78
78
/// </summary>
79
79
/// <param name="folder">sub folder</param>
80
+ /// <param name="extension">include only files with this extension</param>
80
81
/// <returns>list of file names (excludes the path)</returns>
81
- public string [ ] GetFiles ( string folder = null )
82
+ public string [ ] GetFiles ( string folder = null , string extension = null )
82
83
{
83
84
if ( string . IsNullOrEmpty ( folder ) )
84
85
{
85
86
folder = defaultFolder ;
86
87
}
87
- return SaveLoadUtility . GetSavedFiles ( folder , baseFolder ) ;
88
+ return SaveLoadUtility . GetSavedFiles ( folder , baseFolder , extension ) ;
88
89
}
89
90
90
91
/// <summary>
@@ -119,7 +120,7 @@ public T Copy<T>(T obj)
119
120
var saveLoadMethod = GetSaveLoadMethod ( saveMethod ) ;
120
121
return ( T ) saveLoadMethod . Copy ( obj ) ;
121
122
}
122
-
123
+
123
124
/// <summary>
124
125
/// Load an object from disk
125
126
/// </summary>
@@ -162,7 +163,7 @@ public void DeleteSave(string filename, string folder = null)
162
163
}
163
164
SaveLoadUtility . DeleteSavedFile ( filename , folder , baseFolder ) ;
164
165
}
165
-
166
+
166
167
/// <summary>
167
168
/// Save object to file and specify the method of save/load
168
169
/// </summary>
@@ -217,7 +218,7 @@ public void SaveUnityObject(UnityEngine.Object unityObj, string filename, string
217
218
{
218
219
jsonData = JsonUtility . ToJson ( unityObj )
219
220
} ;
220
-
221
+
221
222
Save ( savedObj , filename , folder ) ;
222
223
}
223
224
@@ -233,12 +234,12 @@ public void SaveUnityObject(UnityEngine.Object unityObj, string filename, string
233
234
public bool LoadUnityObjectOverwrite ( UnityEngine . Object objectToOverwrite , string filename , string folder = null )
234
235
{
235
236
var savedObj = Load < JsonSerializedUnityObject > ( filename , folder ) ;
236
-
237
+
237
238
if ( savedObj == null || string . IsNullOrEmpty ( savedObj . jsonData ) )
238
239
{
239
240
return false ;
240
241
}
241
-
242
+
242
243
JsonUtility . FromJsonOverwrite ( savedObj . jsonData , objectToOverwrite ) ;
243
244
return true ;
244
245
}
@@ -253,7 +254,7 @@ public void CopyUnityObjectOverwrite(UnityEngine.Object toCopy, UnityEngine.Obje
253
254
var jsonData = JsonUtility . ToJson ( toCopy ) ;
254
255
JsonUtility . FromJsonOverwrite ( jsonData , toOverwrite ) ;
255
256
}
256
-
257
+
257
258
/// <summary>
258
259
/// JsonSerializedUnityObject
259
260
/// Wrapper for json data created when using Unity's JsonUtility to serialize an object derived from UnityEngine.Object
@@ -280,7 +281,7 @@ public void SetCustomSerializationMethod(ISerializationMethod customSerializatio
280
281
}
281
282
_methods [ SerializationMethodType . Custom ] = customSerializationMethod ;
282
283
}
283
-
284
+
284
285
private ISerializationMethod GetSaveLoadMethod ( SerializationMethodType methodType )
285
286
{
286
287
if ( _methods == null )
@@ -305,14 +306,14 @@ private ISerializationMethod GetSaveLoadMethod(SerializationMethodType methodTyp
305
306
case SerializationMethodType . UnityJson :
306
307
method = new SerializationMethodUnityJson ( ) ;
307
308
break ;
308
-
309
+
309
310
case SerializationMethodType . BinaryEncrypted :
310
311
method = new SerializationMethodBinaryEncrypted ( key , salt ) ;
311
312
break ;
312
313
case SerializationMethodType . UnityJsonEncrypted :
313
314
method = new SerializationMethodUnityJsonEncrypted ( key , salt ) ;
314
315
break ;
315
-
316
+
316
317
#if JSON_DOT_NET
317
318
case SerializationMethodType . JsonDotNet:
318
319
method = new SerializationMethodJsonDotNet ( ) ;
@@ -321,19 +322,17 @@ private ISerializationMethod GetSaveLoadMethod(SerializationMethodType methodTyp
321
322
method = new SerializationMethodJsonDotNetEncrypted ( key , salt ) ;
322
323
break ;
323
324
#endif
324
-
325
+
325
326
case SerializationMethodType . Custom :
326
327
throw new MissingComponentException ( "SerializationMethodType is Custom but no custom ISerializationMethod was found." ) ;
327
328
default :
328
329
throw new ArgumentOutOfRangeException ( nameof ( methodType ) , methodType , "SaveLoadMethodType not supported" ) ;
329
330
}
330
331
331
332
_methods [ methodType ] = method ;
332
-
333
+
333
334
return method ;
334
335
}
335
-
336
- }
337
- }
338
-
339
336
337
+ }
338
+ }
0 commit comments