Пример засовывания массива значений в PlayerPrefs

Программирование на Юнити.

Пример засовывания массива значений в PlayerPrefs

Сообщение gnoblin 21 янв 2010, 12:52

Иногда нужно засунуть в PlayerPrefs массив значений, либо просто хочется оптимизировать туда доступ (часто и много читать\писать == нехорошо).

Суть сводится к упаковке массива в строку с разделителями и последующем доставании этого массива оттуда, но уже без разделителей.

Плюс, здесь показано как можно работать с несколькими профилями у игроков.

Получаем:
Код: Выделить всё
public static bool GetLevelProgress(out int[] progress, current_player)
    {
        if (PlayerPrefs.HasKey("LevelProgress" + "@" + current_player))
        {
            string res = PlayerPrefs.GetString("LevelProgress" + "@" + current_player);

            string[] str = res.Split('|');
            int count = str.Length;
            progress = new int[count];

            for (int i = 0; i < count; i++)
            {
                progress[i] = int.Parse(str[i]);
            }
           
            return true;
        }
       
        progress = null;
        return false;
    }


Засовываем:
Код: Выделить всё
public static bool SetLevelProgress(int[] progress, current_player)
    {
        if (progress == null)
            return false;

        string s = "";
        int count = progress.Length;
       
        for (int i = 0; i < count; i++)
        {
            s += progress[i];
            if (i < count - 1)
                s += "|";
        }

        PlayerPrefs.SetString("LevelProgress" + "@" + current_player, s);
 
        return true;
    }
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11