Я новичок в Unity и работаю над меню выбора персонажей, в котором, если у вас достаточно монет, вы можете купить желаемого персонажа. Как только игрок покупает один, этот персонаж не должен быть заблокирован при перезапуске игры, количество монет не должно быть изменено снова, и изображение блокировки (GameObject, который я определил под именем «wood» и действует как замок), должно исчезнуть. Все работает нормально, когда я покупаю одного персонажа, но когда я покупаю другого, предыдущий возвращается в заблокированный режим, но его изображение (дерево) уже исчезло (я имею в виду, что у меня должно быть достаточно монет, чтобы повторно купить уже купленного персонажа). Я предполагаю, что с этим кодом должно быть что-то не так isPlanesold = PlayerPrefs.GetInt ("isPlanesold"); Потому что он меняется по мере покупки персонажа. вот мой скрипт;
int isPlanesold;
public static int chnum; //character number that must be referenced on another scene
public Button WhitePlane;
public Button YellowPlane;
public GameObject wood1;
public GameObject wood2;
void Start () {
PlayerPrefs.SetString ("BluePlane", "on");
if (PlayerPrefs.GetString ("WhitePlane") == "on") {
wood1.SetActive (false);
}
if (PlayerPrefs.GetString ("YellowPlane") == "on") {
wood2.SetActive (false);
}
UIManager2.coin_score = PlayerPrefs.GetInt ("Score");
isPlanesold = PlayerPrefs.GetInt ("isPlanesold");
}
public void BuyWhitePlane () {
if (isPlanesold == 1) {
PlayerPrefs.SetInt ("isPlanesold", 1);
chnum = 2;
PlayerPrefs.Save ();
SceneManager.LoadScene ("Menu2");
} else if (UIManager2.coin_score >= 1) {
PlayerPrefs.SetInt ("isPlanesold", 1);
chnum = 2;
PlayerPrefs.SetInt ("Score", UIManager2.coin_score--);
PlayerPrefs.SetInt ("Score", UIManager2.coin_score);
PlayerPrefs.Save ();
PlayerPrefs.SetString ("WhitePlane", "on");
SceneManager.LoadScene ("Menu2");
}
else
{
Debug.Log ("You Don't Have The Score");
}
}
public void BuyYellowPlane () {
if (isPlanesold == 2) {
PlayerPrefs.SetInt ("isPlanesold", 2);
chnum = 3;
PlayerPrefs.Save ();
SceneManager.LoadScene ("Menu2");
} else if (UIManager2.coin_score >= 2) {
PlayerPrefs.SetInt ("isPlanesold", 2);
chnum = 3;
PlayerPrefs.SetInt ("Score", UIManager2.coin_score -= 2);
PlayerPrefs.SetInt ("Score", UIManager2.coin_score);
PlayerPrefs.Save ();
PlayerPrefs.SetString ("YellowPlane", "on");
SceneManager.LoadScene ("Menu2");
}
else
{
Debug.Log ("You Don't Have The Score");
}
}
PlayerPrefs.SetString ("BluePlane", "on"); относится к символу, который по умолчанию разблокирован.