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
Easy save is not easy for me!
Re: Easy save is not easy for me!
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:
It's my ES3Type_Sprite file:
Code: Select all
Assets/Easy Save 3/Types/ES3Type_Sprite.cs(40,19): error CS0143: The class `UnityEngine.Sprite' has no constructors defined
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;
}
}
}
Re: Easy save is not easy for me!
Sorry that was a SpriteJoel 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
public Sprite[] itemBigPic = new Sprite[numItemSlots];
Re: Easy save is not easy for me!
I save my Sprite with this code:
As you can see I have a Sprite in my Inspector:
And load it with:
But after loading, there is no sprite, or maybe it is but without any name or reference:
Also it's my Inventory Script that I want to save most of its Array variables:
Code: Select all
ES3.Save<Sprite> ("SpriteTest", itemBigPic [0]);
Code: Select all
if (ES3.KeyExists ("SpriteTest")){itemBigPic[0] = ES3.Load<Sprite> ("SpriteTest");}
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);
}
}
Re: Easy save is not easy for me!
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.
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
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
Re: Easy save is not easy for me!
"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...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.
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()
Re: Easy save is not easy for me!
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
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
Re: Easy save is not easy for me!
I was using it, when I was trying to implement Auto saving. I was thinking it's just for Auto save.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
Thanks