Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Все Вопросы Мои Вопросы

ошибка Index was outside the bounds of the array

UnityC#2D

У меня было по началу всё хорошо, но я решил облегчить код для моей стороны и вдруг появилась ошибка
Index was outside the bounds of the array
P.S) жалуется на OnApplicationQuit() в 24 строке


private void OnApplicationQuit()
    {
        sv.Score = Score;
        sv.ClickScore = ClickScore;
        sv.PassiveBonus = new float[1];
        sv.CostIntACTIVE = new float[2];
        sv.CostIntPASSIVE = new float[3];
        sv.Achievement1Max = Achievement1Max;
        sv.isAcievement1 = isAcievement1;
        sv.isAcievement2 = isAcievement2;
        sv.isAchievement2Get = isAchievement2Get;

        sv.isAchievement3Get = isAchievement3Get;
        sv.isAcievement3 = isAcievement3;

        for (int i = 0; i < 1; i++)
        {
            sv.PassiveBonus[i] = PassiveBonus[i];
        }

        for (int i = 0; i < 2; i++)
        {
            sv.CostIntACTIVE[i] = CostIntACTIVE[i];
            sv.CostIntPASSIVE[i] = CostIntPASSIVE[i];
        }

        sv.Date[0] = DateTime.Now.Year; sv.Date[1] = DateTime.Now.Month; sv.Date[2] = DateTime.Now.Day; sv.Date[3] = DateTime.Now.Hour; sv.Date[4] = DateTime.Now.Minute; sv.Date[5] = DateTime.Now.Second;

        PlayerPrefs.SetString("SV", JsonUtility.ToJson(sv));
    }


Комментарии

11
Name_130 1 год назад

Попробуй OnApplicationQuit заменить на OnDestroy

Fin4ik 1 год назад

Name_130, а нафига мне этот метод если у меня метод заключается в том, что когда выходишь из игры, то автоматически сохраняются данные?

Name_130 1 год назад

Fin4ik, По идее OnDestroy делает то же самое)

Fin4ik 1 год назад

Name_130, он вроде уничтожает объект

Lev 1 год назад

Fin4ik, OnDestroy вызывается при уничтожении объекта, а OnApplicationQuit при выходе из приложений, к моменту когда он вызовется все ссылки для работы этого скрипта могут быть стёрты, при OnDestroy такого не произойдет.

Lev 1 год назад

Fin4ik, я бы на всякий вообще OnDisable использовал, он безопаснее т.к в момент его вызова ничего удалено вообще не будет, но он так же вызовется при выходе из приложения(штатного).

Lev 1 год назад

Fin4ik, а вообще тут можно только гадать с таким примером, у тебя массив sv.CostIntACTIVE сколько имеет элементов? Он инициализирован? В идеале он должен иметь столько же элементов сколько и CostIntACTIVE[i], ввведи перед вызовом этой функции след код:

Debug.Log(sv == null);
Debug.Log(sv.CostIntACTIVE.Lenght);
Debug.Log(CostIntACTIVE.Lenght);

и всё сразу станет понятно.

Fin4ik 1 год назад

Lev, спасибо

Fin4ik 1 год назад

Lev, так же у меня инициализиравоно всё, что находиться в методе Save, туда же относиться CostIntACTIVE и CostIntPASSIVE

Lev 1 год назад

Fin4ik, пофиксил?

Fin4ik 1 год назад

Lev, не совсем, я сбросил код до рабочего

Гости не могут отвечать на вопросы. Войдите на Сайт или Зарегистрируйтесь