Hello everyone,
I am using playerprefs to save a single variable. I have several factors affecting this variable across several scenes. For instance, in scene a, script a is modifying the variable, but in scene b, script b is also modifying the variable. However, for some reason, the variable does not save between scenes. Does anyone have any troubleshooting advice? My scripts are below: (sorry for them being so long. I thought giving more info was better than giving less. If you need anything else, let me know.)
using System.Collections;
public class CarrotCount : MonoBehaviour
{
public float x;
public float y;
public float z;
public float unknown;
public int carrotnumber; // important
void Start ()
{
StartCoroutine (fiveseconds ());
carrotnumber = PlayerPrefs.GetInt ("carrotnumber", 10);
Debug.Log (carrotnumber);
}
// public void PLUS1 ()
// {
// Debug.Log ("Plus 1 carrot");
// carrotnumber += 1;
// Debug.Log (carrotnumber);
// PlayerPrefs.SetInt ("carrotnumber", carrotnumber);
//
// }
void OnGUI () {
GUI.Box (new Rect (x, y, z, unknown), "Carrots:"+ carrotnumber);
}
void Update ()
{
//PlayerPrefs.SetInt ("carrotnumber", carrotnumber);
// carrotnumber = PlayerPrefs.GetInt ("carrotnumber");
}
IEnumerator fiveseconds ()
{
yield return new WaitForSeconds (1) ;
PlayerPrefs.SetInt ("carrotnumber", carrotnumber);
PlayerPrefs.Save ();
Debug.Log (carrotnumber);
StartCoroutine (fiveseconds ());
}
}
script a:
using System;
using UnityEngine;
using UnityEngine.Advertisements;
public class test1 : MonoBehaviour {
public int xdist = 10;
public int ydis = 10;
public CarrotCount _carrotcount;
void Awake() {
if (Advertisement.isSupported) {
Advertisement.Initialize ("64925");
} else {
Debug.Log("Platform not supported");
}
}
void OnGUI() {
if(GUI.Button(new Rect(xdist, ydis, 85, 40), Advertisement.IsReady() ? "Free Carrots" : "Waiting...")) {
// Show with default zone, pause engine and print result to debug log
Advertisement.Show(null, new ShowOptions {
resultCallback = result => {
Debug.Log(result.ToString());
_carrotcount.carrotnumber += 5;
}
});
}
}
}
script b:
using UnityEngine;
using System.Collections;
public class Ifclicked : MonoBehaviour {
public MoveCarrot _MoveCarrot;
public CarrotCount _CarrotCount ;
public string use;
public killmole _killmole;
GameObject carrotmaster;
void Start ()
{
// carrotmaster = GameObject.Find ("carrotmaster");
// CarrotCount _CarrotCount = (CarrotCount) carrotmaster.GetComponent (typeof(CarrotCount));
}
void OnMouseDown ()
{
_MoveCarrot.move ();
_CarrotCount.carrotnumber += 1;
}
}
Once again, thank you for the help.