55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using UnityEngine; | |||
|  | using System.Collections.Generic; | |||
|  | 
 | |||
|  | public class ES3AutoSave : MonoBehaviour, ISerializationCallbackReceiver | |||
|  | { | |||
|  |     public bool saveLayer = true; | |||
|  |     public bool saveTag = true; | |||
|  |     public bool saveName = true; | |||
|  |     public bool saveHideFlags = true; | |||
|  |     public bool saveActive = true; | |||
|  |     public bool saveChildren = false; | |||
|  | 
 | |||
|  |     private bool isQuitting = false; | |||
|  | 
 | |||
|  |     //[HideInInspector] | |||
|  |     public List<Component> componentsToSave = new List<Component>(); | |||
|  | 
 | |||
|  |     public void Reset() | |||
|  |     { | |||
|  |         // Initialise saveLayer (etc) to false for all new Components. | |||
|  |         saveLayer = false; | |||
|  |         saveTag = false; | |||
|  |         saveName = false; | |||
|  |         saveHideFlags = false; | |||
|  |         saveActive = false; | |||
|  |         saveChildren = false; | |||
|  |     } | |||
|  | 
 | |||
|  |     public void Awake() | |||
|  |     { | |||
|  |         if (ES3AutoSaveMgr.Current == null) | |||
|  |             ES3Internal.ES3Debug.LogWarning("<b>No GameObjects in this scene will be autosaved</b> because there is no Easy Save 3 Manager. To add a manager to this scene, exit playmode and go to Assets > Easy Save 3 > Add Manager to Scene.", this); | |||
|  |         else | |||
|  |             ES3AutoSaveMgr.AddAutoSave(this); | |||
|  |     } | |||
|  | 
 | |||
|  |     public void OnApplicationQuit() | |||
|  |     { | |||
|  |         isQuitting = true; | |||
|  |     } | |||
|  | 
 | |||
|  |     public void OnDestroy() | |||
|  |     { | |||
|  |         // If this is being destroyed, but not because the application is quitting, | |||
|  |         // remove the AutoSave from the manager. | |||
|  |         if (!isQuitting) | |||
|  |             ES3AutoSaveMgr.RemoveAutoSave(this); | |||
|  |     } | |||
|  |     public void OnBeforeSerialize() { } | |||
|  |     public void OnAfterDeserialize() | |||
|  |     { | |||
|  |         // Remove any null Components | |||
|  |         componentsToSave.RemoveAll(c => c == null || c.GetType() == typeof(Component)); | |||
|  |     } | |||
|  | } |