Hello!
I’m working on a script that handles the meat of my saves in my game. I want the user to be able to click a button in the pause menu to save the game, and have the script load a GUI Canvas saying “No Save Data Found”, or load the saved level string. When I run the function however, it gives me this error:
ArgumentException: INTERNAL_CALL_GetActiveScene can only be called from the main thread.
Constructors and field initializers will be executed from the loading thread when loading a scene.
INTERNAL_CALL_GetActiveScene can only be called from the main thread.
Constructors and field initializers will be executed from the loading thread when loading a scene.
I’m not really sure what’s happening, or what I can do to fix it. If anyone can figure out a fix, that would be awesome!
Script (Sample):
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class SaveAndLoad : MonoBehaviour {
Scene myscene = SceneManager.GetActiveScene();
public string LoadChecker = "false";
public void LoadSavedGame() {
LoadChecker = PlayerPrefs.GetString("LoadChecker");
if (LoadChecker == null) {
Debug.Log("No Save Data Available To Load From");
} else {
SceneManager.LoadScene(PlayerPrefs.GetString("LoadString"));
}
}
public void SaveLevelData() {
if (myscene.name == "level1") {
PlayerPrefs.SetString("LoadString", myscene.name);
LoadChecker = "true";
PlayerPrefs.SetString("LoadChecker", LoadChecker);
PlayerPrefs.Save();
Debug.Log("Working");
}
if (myscene.name == "level2") {
PlayerPrefs.SetString("LoadString", myscene.name);
LoadChecker = "true";
PlayerPrefs.SetString("LoadChecker", LoadChecker);
PlayerPrefs.Save();
}
}
}