Easy save is not easy for me!

Discussion and help for Easy Save 3
User avatar
Joel
Moodkie Staff
Posts: 4846
Joined: Wed Nov 07, 2012 10:32 pm

Re: Easy save is not easy for me!

Post by Joel »

Hi there,

Would you be able to let me know what aspects of your Image changes? You probably do not want to serialise the entire Image, as this would also store it's image data each time. Are these instantiated at runtime, or does an instance of this Image always exist in the scene? If you could give me more information on how you're changing your images then that would be greatly appreciated.

All the best,
Joel
Joel @ Moodkie Interactive
Purchase Easy Save | Contact | Guides | Docs | Getting started
User avatar
fanaei
Posts: 26
Joined: Thu Aug 23, 2018 7:54 am

Re: Easy save is not easy for me!

Post by fanaei »

I want to save a Sprite but the Sprite doesn't get saved. And when I want to change the propertis I get this error:

Code: Select all

Assets/Easy Save 3/Types/ES3Type_Sprite.cs(40,19): error CS0143: The class `UnityEngine.Sprite' has no constructors defined
It's my ES3Type_Sprite file:

Code: Select all

using System;
using UnityEngine;

namespace ES3Types
{
	[ES3PropertiesAttribute("name")]
	public class ES3Type_Sprite : ES3ObjectType
	{
		public static ES3Type Instance = null;

		public ES3Type_Sprite() : base(typeof(UnityEngine.Sprite)){ Instance = this; }

		protected override void WriteObject(object obj, ES3Writer writer)
		{
			var instance = (UnityEngine.Sprite)obj;
			
			writer.WriteProperty("name", instance.name, ES3Type_string.Instance);
		}

		protected override void ReadObject<T>(ES3Reader reader, object obj)
		{
			var instance = (UnityEngine.Sprite)obj;
			foreach(string propertyName in reader.Properties)
			{
				switch(propertyName)
				{
					
					case "name":
						instance.name = reader.Read<System.String>(ES3Type_string.Instance);
						break;
					default:
						reader.Skip();
						break;
				}
			}
		}

		protected override object ReadObject<T>(ES3Reader reader)
		{
			var instance = new UnityEngine.Sprite();
			ReadObject<T>(reader, instance);
			return instance;
		}
	}

	public class ES3Type_SpriteArray : ES3ArrayType
	{
		public static ES3Type Instance;

		public ES3Type_SpriteArray() : base(typeof(UnityEngine.Sprite[]), ES3Type_Sprite.Instance)
		{
			Instance = this;
		}
	}
}
User avatar
fanaei
Posts: 26
Joined: Thu Aug 23, 2018 7:54 am

Re: Easy save is not easy for me!

Post by fanaei »

Joel wrote:Hi there,

Would you be able to let me know what aspects of your Image changes? You probably do not want to serialise the entire Image, as this would also store it's image data each time. Are these instantiated at runtime, or does an instance of this Image always exist in the scene? If you could give me more information on how you're changing your images then that would be greatly appreciated.

All the best,
Joel
Sorry that was a Sprite
public Sprite[] itemBigPic = new Sprite[numItemSlots];
User avatar
fanaei
Posts: 26
Joined: Thu Aug 23, 2018 7:54 am

Re: Easy save is not easy for me!

Post by fanaei »

I save my Sprite with this code:

Code: Select all

ES3.Save<Sprite> ("SpriteTest", itemBigPic [0]);
As you can see I have a Sprite in my Inspector:
Problem1.jpg
Problem1.jpg (28.63 KiB) Viewed 4819 times
And load it with:

Code: Select all

if (ES3.KeyExists ("SpriteTest")){itemBigPic[0] = ES3.Load<Sprite> ("SpriteTest");}
But after loading, there is no sprite, or maybe it is but without any name or reference:
Problem2.jpg
Problem2.jpg (26.67 KiB) Viewed 4819 times
Also it's my Inventory Script that I want to save most of its Array variables:

Code: Select all

using UnityEngine;
using UnityEngine.UI;
using System;


public class Inventory : MonoBehaviour
{
	public int Gems;
	public GameObject GemText;
	public float health;
	public RectTransform HealthBar;
	public GameObject EquipBtn;
	public GameObject UnEquipBtn;
	public GameObject ItemBorder;
	public String ItemSelected;
	public String ItemEquipedName;
	public Image ItemEquipedImage;
	public Image ItemEquipedBg;
	String ItemEquipedCombineNeed;
	GameObject ItemToBeMade;
	public bool Equiped;
	public int ItemNumberSelected = -1;
	public const int numItemSlots = 28;
	public Text ItemDescBox;
	public GameObject LongTextBoxScroll;
	public Text ItemLongTextBox;
	public Image ItemBigPicBox;
	public Image EmptyItemImage;
	public AudioClip SelectSound;
	public AudioClip EquipSound;
	public AudioClip AddGemSound;
	public AudioClip EatSound;
	public AudioClip CombineSound;
	public AudioClip UnEquipSound;
	public AudioClip ErrorSound;
	public Image EquipBtnIcon;
	public Sprite UseIcon;
	public Sprite WatchIcon;
	public Sprite CombineIcon;
	public Sprite ReadIcon;
	public Sprite AddGemIcon;
	public Sprite EatIcon;
	public int EmptySlots = 28;
	public bool[] ItemSelect = new bool[numItemSlots];
	public String[] itemName = new String[numItemSlots];
	public Image[] itemImages = new Image[numItemSlots];
	public Image[] itemBgImages = new Image[numItemSlots];
	public Button[] itemBtn = new Button[numItemSlots];
	public String[] itemDesc = new String[numItemSlots];
	public String[] itemType = new String[numItemSlots];
	public int[] itemHealth = new int[numItemSlots];
	public Sprite[] itemBigPic = new Sprite[numItemSlots];
	public String[] itemText = new String[numItemSlots];
	public String[] itemToCombine = new String[numItemSlots];
	public GameObject[] ItemToMade = new GameObject[numItemSlots];
	//public Objects[] items = new Objects[numItemSlots];
	Color ItemEquipedImageEmtyColor;
	bool ReadyToCombine;
	//--------------------------------------------------------------------------
	void Awake(){
		ItemEquipedImageEmtyColor = ItemEquipedImage.color;
	}
	// Select Item--------------------------------
	public void SelectItem(int ItemNum){
		if (ItemNum < numItemSlots) {
			// Unselect the rest of Items
			for (int i = 0; i < ItemSelect.Length; i++) {
				if (itemName [i] != "") {
					itemImages [i].color = new Color (itemImages [i].color.r, itemImages [i].color.g, itemImages [i].color.b, 1);
					itemBgImages [i].color = new Color (0.5f, 0.5f, 0.5f, 1);
					ItemSelect [i] = false;
				}
			}
			// Selecting Items
			if (itemName [ItemNum] != "") {
				// Select Item to Combine
				if (ReadyToCombine == true) {
					// Combine Items if they match
					if (ItemEquipedCombineNeed == itemName [ItemNum]) {
						AudioSource.PlayClipAtPoint (CombineSound, gameObject.transform.position);
						RemoveItem (ItemSelected);
						ReadyToCombine = false;
						// Add New Combined Item
						itemName [ItemNum] = ItemToBeMade.GetComponent<Objects>().ItemName;
						itemImages [ItemNum].sprite = ItemToBeMade.GetComponent<Objects>().ItemIcon;
						itemDesc [ItemNum] = ItemToBeMade.GetComponent<Objects>().ItemDesc;
						itemType [ItemNum] = ItemToBeMade.GetComponent<Objects>().ItemType.ToString ();
						itemHealth [ItemNum] = ItemToBeMade.GetComponent<Objects>().HealthAmount;
						itemBigPic [ItemNum] = ItemToBeMade.GetComponent<Objects>().ItemImage;
						if (ItemToBeMade.GetComponent<Objects>().ItemText) {itemText [ItemNum] = ItemToBeMade.GetComponent<Objects>().ItemText.text;}
						itemToCombine [ItemNum] = ItemToBeMade.GetComponent<Objects>().CombineMatch;
						ItemToMade [ItemNum] = ItemToBeMade.GetComponent<Objects>().AfterCombine;
						itemImages [ItemNum].enabled = true;
						itemImages [ItemNum].color = Color.white;
					}
					// Decline Combine if choosing wrong item
					if (ItemEquipedCombineNeed != itemName [ItemNum] && ItemEquipedCombineNeed != "") {
						ReadyToCombine = false;
						AudioSource.PlayClipAtPoint (ErrorSound, gameObject.transform.position);
						ItemBorder.GetComponent<Animator> ().Play ("BorderErrorItem");
					}
				}
				// -- Change Equip Icon
				if (itemType [ItemNum].ToString () == "Usable") {EquipBtnIcon.sprite = UseIcon;}
				if (itemType [ItemNum].ToString () == "Eatable") {EquipBtnIcon.sprite = EatIcon;}
				if (itemType [ItemNum].ToString () == "Watchable") {EquipBtnIcon.sprite = WatchIcon;}
				if (itemType [ItemNum].ToString () == "Readble") {EquipBtnIcon.sprite = ReadIcon;}
				if (itemType [ItemNum].ToString () == "Combinable") {EquipBtnIcon.sprite = CombineIcon;}
				if (itemType [ItemNum].ToString () == "Gem") {EquipBtnIcon.sprite = AddGemIcon;}

				// Selecting Items (when Not Combining)
				if (ReadyToCombine == false) {
					AudioSource.PlayClipAtPoint (SelectSound, gameObject.transform.position);
					ItemSelected = itemName [ItemNum];
					itemBgImages [ItemNum].color = new Color (0.6f, 0.7f, 0.6f, 1);
					ItemDescBox.text = itemDesc [ItemNum];
					ItemSelect [ItemNum] = true;
					ItemNumberSelected = ItemNum;
					ItemBorder.GetComponent<Image>().transform.position = itemImages [ItemNumberSelected].transform.position;
					ItemBorder.GetComponent<Image>().enabled = true;
					//Show Item in EquipBox
					EquipBtn.SetActive (true);
					ItemEquipedImage.enabled = true;
					ItemEquipedImage.sprite = itemImages [ItemNum].sprite;
					ItemEquipedImage.color = new Color (1, 1, 1, 0.7f);
			
					//Unequip Previous Item
					EquipBtn.SetActive (true);
					Equiped = false;
					UnEquipBtn.SetActive (false);
				}
			}
				// Unselect it touched empty item box
				if (itemName [ItemNum] == "") {
					if (Equiped == false) {
						ItemEquipedName = null;
						ItemEquipedImage.sprite = EmptyItemImage.sprite;
						ItemEquipedImage.color = ItemEquipedImageEmtyColor;
						ItemEquipedCombineNeed = "";
						EquipBtn.SetActive (false);
					}
					// UnSelect Items When quiting Inventory 
					for (int i = 0; i < ItemSelect.Length; i++) {
						itemImages [i].color = new Color (itemImages [i].color.r, itemImages [i].color.g, itemImages [i].color.b, 1);
						//itemBgImages [i].color = new Color (0.5f, 0.5f, 0.5f, 1);
						ItemSelect [i] = false;
						ItemDescBox.text = null;
						ItemBorder.GetComponent<Image>().enabled = false;
					}
				}
			
		}
		// Unselect if touched the screen out of button place
		else {
				for (int i = 0; i < ItemSelect.Length; i++) {
					itemImages [i].color = new Color (itemImages [i].color.r, itemImages [i].color.g, itemImages [i].color.b, 1);
					itemBgImages [i].color = new Color (0.5f, 0.5f, 0.5f, 1);
					ItemSelect [i] = false;
					ItemDescBox.text = null;
					ItemBorder.GetComponent<Image>().enabled = false;
				}
			}
		
	}
	//--------- Add new Item-----------------------
	public void AddItem(Objects itemToAdd)
	{
		for (int i = 0; i < itemName.Length; i++)
		{
			if (itemName [i] == "") {
				EmptySlots -= 1;
				// propertis of item to add
				//items [i] = itemToAdd.ItemPrefab;
				itemName [i] = itemToAdd.ItemName;
				itemImages [i].sprite = itemToAdd.ItemIcon;
				itemBgImages [i].color = new Color (0.5f, 0.5f, 0.5f, 1);
				itemDesc [i] = itemToAdd.ItemDesc;
				itemType [i] = itemToAdd.ItemType.ToString ();
				itemHealth [i] = itemToAdd.HealthAmount;
				if (itemToAdd.ItemImage) {itemBigPic [i] = itemToAdd.ItemImage;}
				if (itemToAdd.ItemText) {itemText [i] = itemToAdd.ItemText.text;}
				if (itemToAdd.CombineMatch != "") {itemToCombine [i] = itemToAdd.CombineMatch;}
				if (itemToAdd.AfterCombine) {ItemToMade [i] = itemToAdd.AfterCombine;}
				// change the image and color of item slot
				itemImages [i].enabled = true;
				itemImages [i].color = Color.white;
				return;
			} 
		}
	}
	//--------- Remove Item-----------------------
	public void RemoveItem (String itemToRemove)
	{
		for (int i = 0; i < itemName.Length; i++)
		{
			//Debug.Log (items[i].ItemName + " / " + itemToRemove + " / " + i + " / " + ItemNumberSelected);
			if (itemName[i] == itemToRemove && i == ItemNumberSelected)
			{
				EmptySlots += 1;
			//	items[i] = null;
				itemImages [i].sprite = null;
				itemImages[i].enabled = false;
				itemBgImages [i].sprite = EmptyItemImage.sprite;
				itemBgImages [i].color = new Color (0.06f, 0.06f, 0.06f, 1);
				ItemSelect [i] = false;
				itemDesc [i] = "";
				itemName [i] = "";
				itemType [i] = "";
				itemHealth [i] = 0;
				itemBigPic [i] = null;
				itemText [i] = "";
				itemToCombine [i] = "";
				ItemToMade [i] = null;
				ItemDescBox.text = "";
				ItemEquipedName = "";
				ItemEquipedCombineNeed = "";
				ItemEquipedImage.sprite = null;
				ItemEquipedImage.color = ItemEquipedImageEmtyColor;

				if (Equiped == true) {
					ItemEquipedBg.enabled = false;
					ItemEquipedImage.enabled = false;}
				EquipBtn.SetActive (false);
				UnEquipBtn.SetActive (false);
				Equiped = false;
				return;
			}
		}

	}
	////////////////////////// ---- EQUIP ITEM -----[USE-EAT-READ-WATCH]-------
	public void EquipItem(){
		if (itemType[ItemNumberSelected].ToString () == "Usable") { 
			AudioSource.PlayClipAtPoint (EquipSound, gameObject.transform.position);
			ItemEquipedName = itemName [ItemNumberSelected];
			ItemEquipedImage.sprite = itemImages [ItemNumberSelected].sprite;
			ItemEquipedImage.color = new Color (1, 1, 1, 1);
			EquipBtn.SetActive (false);
			UnEquipBtn.SetActive (true);
			Equiped = true;
		}
		// -- Watch Item
		if (itemType[ItemNumberSelected].ToString () == "Watchable") { 
			AudioSource.PlayClipAtPoint (EquipSound, gameObject.transform.position);
			ItemBigPicBox.enabled = true;
			ItemBigPicBox.sprite = itemBigPic [ItemNumberSelected];
			ItemEquipedName = itemName [ItemNumberSelected];
			ItemEquipedImage.sprite = itemImages [ItemNumberSelected].sprite;
			ItemEquipedImage.color = new Color (1, 1, 1, 1);
			EquipBtn.SetActive (false);
			UnEquipBtn.SetActive (true);
			Equiped = false;
		}
		// -- Read Item
		if (itemType[ItemNumberSelected].ToString () == "Readble") { 
			AudioSource.PlayClipAtPoint (EquipSound, gameObject.transform.position);
			LongTextBoxScroll.SetActive (true);
			ItemLongTextBox.enabled = true;
			ItemLongTextBox.text = itemText [ItemNumberSelected];
			ItemEquipedName = itemName [ItemNumberSelected];
			ItemEquipedImage.sprite = itemImages [ItemNumberSelected].sprite;
			ItemEquipedImage.color = new Color (1, 1, 1, 1);
			EquipBtn.SetActive (false);
			UnEquipBtn.SetActive (true);
			Equiped = false;
		}
		// -- Eat Item
		if (itemType [ItemNumberSelected].ToString () == "Eatable") { 
			if (health < 100) {
				AudioSource.PlayClipAtPoint (EatSound, gameObject.transform.position);
				health += itemHealth [ItemNumberSelected];
				HealthBar.localScale = new Vector3 (1, health / 100, 1);
				RemoveItem (ItemSelected);
				ItemEquipedName = "";
				ItemEquipedImage.enabled = false;
				//ItemEquipedImage.sprite = EmptyItemImage.sprite;
				ItemEquipedImage.color = ItemEquipedImageEmtyColor;
				ItemBorder.GetComponent<Image>().enabled = false;
				EquipBtn.SetActive (false);
				UnEquipBtn.SetActive (false);
				Equiped = false;
			} else {
				AudioSource.PlayClipAtPoint (ErrorSound, gameObject.transform.position);
				ItemBorder.GetComponent<Animator> ().Play ("BorderErrorItem");
			}
		}
		// -- Use GEM
		if (itemType[ItemNumberSelected].ToString () == "Gem") {
			AudioSource.PlayClipAtPoint (AddGemSound, gameObject.transform.position);
			Gems += 1;
			GemText.GetComponent<Text>().text = Gems.ToString ();
			GemText.GetComponent<Animator> ().Play ("AddGemItem");
			RemoveItem (ItemSelected);
			ItemEquipedName = "";
			ItemEquipedImage.enabled = false;
			ItemEquipedImage.color = ItemEquipedImageEmtyColor;
			ItemBorder.GetComponent<Image>().enabled = false;
			EquipBtn.SetActive (false);
			UnEquipBtn.SetActive (false);
			Equiped = false;
		}
		// -- Combine Items
		if (itemType [ItemNumberSelected].ToString () == "Combinable") {
			AudioSource.PlayClipAtPoint (EquipSound, gameObject.transform.position);
			ReadyToCombine = true;
			ItemBorder.GetComponent<Image>().enabled = false;
			ItemToBeMade = ItemToMade[ItemNumberSelected];
			ItemEquipedCombineNeed = itemToCombine[ItemNumberSelected];
			ItemEquipedName = itemName [ItemNumberSelected];
			ItemEquipedImage.sprite = itemImages [ItemNumberSelected].sprite;
			ItemEquipedImage.color = new Color (1, 1, 1, 1);
			EquipBtn.SetActive (false);
			UnEquipBtn.SetActive (true);
			Equiped = false;
		}

	}
	//-----------------------------------------
	public void UnequipItem(){
		ReadyToCombine = false;
		Equiped = false;
		if (itemType [ItemNumberSelected].ToString () != "Readble" && itemType [ItemNumberSelected].ToString () != "Watchable") {
			ItemEquipedName = null;
			ItemEquipedCombineNeed = "";
			ItemEquipedImage.enabled = false;
			//ItemEquipedImage.sprite = EmptyItemImage.sprite;
			ItemEquipedImage.color = ItemEquipedImageEmtyColor;
		//	EquipBtn.SetActive (true);
			ItemBorder.GetComponent<Image>().enabled = false;
		//	ItemNumberSelected = -1;
		}
		//
		LongTextBoxScroll.SetActive (false);
		ItemLongTextBox.enabled = false;
		ItemBigPicBox.enabled = false;
		AudioSource.PlayClipAtPoint (UnEquipSound, gameObject.transform.position);

		if (itemType [ItemNumberSelected].ToString () == "Readble" || itemType[ItemNumberSelected].ToString () == "Watchable") { 
			EquipBtn.SetActive (true);
		}
		// UnSelect Items  
		for (int i = 0; i < ItemSelect.Length; i++) {
			if (itemName [i] != "") {
				itemImages [i].color = new Color (itemImages [i].color.r, itemImages [i].color.g, itemImages [i].color.b, 1);
				itemBgImages [i].color = new Color (0.5f, 0.5f, 0.5f, 1);
			}
			ItemSelect [i] = false;
			ItemDescBox.text = null;
		}
	}
//---------- Start Inventory
	public void ShowInventory(){
		EquipBtn.SetActive (false);
		if (Equiped == true) {
			ItemEquipedImage.enabled = true;
		}
		ItemEquipedBg.enabled = true;

	}
//----------Exit Inventory
	public void ExitInventory(){
		if (Equiped == false) {
			ItemEquipedName = null;
			ItemEquipedCombineNeed = "";
			ItemEquipedBg.enabled = false;
			ItemEquipedBg.sprite = EmptyItemImage.sprite;
			ItemEquipedImage.color = ItemEquipedImageEmtyColor;
			ItemEquipedImage.enabled = false;
			UnEquipBtn.SetActive (false);
		}
		ItemBigPicBox.enabled = false;
		// UnSelect Items When quiting Inventory 
		for (int i = 0; i < ItemSelect.Length; i++) {
			if (itemName [i] != "") {
				itemImages [i].color = new Color (itemImages [i].color.r, itemImages [i].color.g, itemImages [i].color.b, 1);
				itemBgImages [i].color = new Color (0.5f, 0.5f, 0.5f, 1);
			}
			ItemSelect [i] = false;
			ItemDescBox.text = null;
			ItemBorder.GetComponent<Image>().enabled = false;
		}
	}

	void Start(){
		HealthBar.localScale = new Vector3 (1, health/100, 1);
	}
}
User avatar
Joel
Moodkie Staff
Posts: 4846
Joined: Wed Nov 07, 2012 10:32 pm

Re: Easy save is not easy for me!

Post by Joel »

Hi there,

You should not create an ES3Type for Sprite as this is built in to Easy Save.

In your example, you're saving an individual Sprite, which will save and load it by value. When objects are loaded by value, they are not assigned a name.

In your case I think you should be saving the array, not each individual Sprite in the array. i.e.
ES3.Save<Sprite[]>("SpriteTest", itemBigTest);
itemBigTest = ES3.Load<Sprite[]>("SpriteTest");
Note that this will not assign the Sprite back to whichever Sprite Renderer is rendering it. It will simply put a reference to it in an array.

Also note that you may need to go to the Easy Save 3 Manager and press the Refresh References button on the ES3ReferenceMgr Component to get it to recognise your Sprites.

All the best,
Joel
Joel @ Moodkie Interactive
Purchase Easy Save | Contact | Guides | Docs | Getting started
User avatar
fanaei
Posts: 26
Joined: Thu Aug 23, 2018 7:54 am

Re: Easy save is not easy for me!

Post by fanaei »

Also note that you may need to go to the Easy Save 3 Manager and press the Refresh References button on the ES3ReferenceMgr Component to get it to recognise your Sprites.
"Easy Save 3 Manager" is an Object?! Because I don't have such an object in my scene! But after adding "ES3ReferenceMgr Component" to my inventory object and refreshing it. My code works well now! I hope I'm doing it right and don't face any other big problem...

Your code for save the sprites as an Array made an error:

Code: Select all

UnityException: Sprite is not rectangle-packed. TextureRect is invalid.
UnityEngine.Sprite.get_textureRect () (at C:/buildslave/unity/build/artifacts/generated/bindings_old/common/Core/SpritesBindings.gen.cs:155)
ES3Types.ES3Type_Sprite.WriteUnityObject (System.Object obj, .ES3Writer writer) (at Assets/Plugins/Easy Save 3/Scripts/Types/Unity Types/ES3Type_Sprite.cs:19)
ES3Types.ES3UnityObjectType.WriteObject (System.Object obj, .ES3Writer writer, ReferenceMode mode) (at Assets/Plugins/Easy Save 3/Scripts/Types/ES3UnityObjectType.cs:40)
ES3Writer.Write (System.Object value, ES3Types.ES3Type type, ReferenceMode memberReferenceMode) (at Assets/Plugins/Easy Save 3/Scripts/Writers/ES3Writer.cs:159)
ES3Types.ES3ArrayType.Write (System.Object obj, .ES3Writer writer, ReferenceMode memberReferenceMode) (at Assets/Plugins/Easy Save 3/Scripts/Types/Collection Types/ES3ArrayType.cs:25)
ES3Writer.Write (System.Object value, ES3Types.ES3Type type, ReferenceMode memberReferenceMode) (at Assets/Plugins/Easy Save 3/Scripts/Writers/ES3Writer.cs:151)
ES3Writer.WriteProperty (System.String name, System.Object value, ES3Types.ES3Type type, ReferenceMode memberReferenceMode) (at Assets/Plugins/Easy Save 3/Scripts/Writers/ES3Writer.cs:212)
ES3Writer.Write[Sprite[]] (System.String key, System.Object value) (at Assets/Plugins/Easy Save 3/Scripts/Writers/ES3Writer.cs:87)
ES3.Save[Sprite[]] (System.String key, System.Object value) (at Assets/Plugins/Easy Save 3/Scripts/ES3.cs:27)
Inventory.SaveIt () (at Assets/00-Scripts/Inventory.cs:68)
UnityEngine.Events.InvokableCall.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:166)
UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:58)
UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:36)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:45)
UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update()
User avatar
Joel
Moodkie Staff
Posts: 4846
Joined: Wed Nov 07, 2012 10:32 pm

Re: Easy save is not easy for me!

Post by Joel »

Hi there,

Have you unchecked "Auto Add Manager to Scene" in the Easy Save settings?

If so, this might be the cause of many of your problems, especially regarding Auto Save (as this is where the Auto Save manager exists).

If you have it unchecked, you will need to go to Assets > Easy Save 3 > Enable Easy Save for Scene to add it.

All the best,
Joel
Joel @ Moodkie Interactive
Purchase Easy Save | Contact | Guides | Docs | Getting started
User avatar
fanaei
Posts: 26
Joined: Thu Aug 23, 2018 7:54 am

Re: Easy save is not easy for me!

Post by fanaei »

Joel wrote:Hi there,

Have you unchecked "Auto Add Manager to Scene" in the Easy Save settings?

If so, this might be the cause of many of your problems, especially regarding Auto Save (as this is where the Auto Save manager exists).

If you have it unchecked, you will need to go to Assets > Easy Save 3 > Enable Easy Save for Scene to add it.

All the best,
Joel
I was using it, when I was trying to implement Auto saving. I was thinking it's just for Auto save.
Thanks
Post Reply