Проблема с выбором персонажа в Unity - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в 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"); относится к символу, который по умолчанию разблокирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...