Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 10
1

Как сохраненить массив в playerprefs?

17.01.2021, 19:36. Просмотров 624. Ответов 3

Привет, тут в моем скрипте проблемка - это скрипт магазина скинов, он рабочий, но есть одна проблемка - мне нужно сохранить массив values, он как видно в скрипте состоит из класса в котором лежит вся инфа о товаре, как и куда его можно сохранить и впоследствии удачно выгрузить?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using UnityEngine;
using UnityEngine.UI;
 
public class ShopController : MonoBehaviour
{
    
    public Values[] values;
    [SerializeField] private Image[] images;
    public Text CostText;
    public int spritenum;
    public Button buyBtn;
    [SerializeField, HideInInspector] private int currentIndex;
 
    public int CurrentIndex
    {
        get => currentIndex;
        set
        {
            if (currentIndex != value)
            {
                currentIndex = value;
                UpdateIndex();
            }
        }
    }
    
    private void Start()
    {
        CurrentIndex = PlayerPrefs.GetInt("Index");
        UpdateIndex();
    }
 
    private void UpdateIndex()
    {
        if (images != null && values != null && images.Length > 0 && values.Length > 0)
        {
            ImageSetSprite(0, currentIndex - 1);
            ImageSetSprite(1, currentIndex);
            ImageSetSprite(2, currentIndex + 1);
        }
    }
 
    public void ImageSetSprite(int imageIndex, int spriteIndex)
    {
        if (imageIndex < images.Length)
        {
            while (spriteIndex >= values.Length)
                spriteIndex -= values.Length;
            while (spriteIndex < 0)
                spriteIndex += values.Length;
            images[imageIndex].sprite = values[spriteIndex].sprite;
            spritenum = spriteIndex;
        }
        CostText.text = values[spriteIndex].cost.ToString();
    }
 
}
 
[System.Serializable]
public class Values
{
     public Sprite sprite;
     public int cost;
     public bool isOwned;
     public bool isChosen;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2021, 19:36
Ответы с готовыми решениями:

PlayerPrefs.GetInt и PlayerPrefs.SetInt - логика записи
Всем привет! Есть такая штука как запись PlayerPrefs, прошу пояснить логику, так как пока не...

Сохраненить как картинку
Здравствуйте, необходимо к кнопке привязать действие &quot;Сохранить как&quot; для выбранной картинки из...

Как сохранять bool в PlayerPrefs
Надо сохранить &quot;true&quot; или &quot;false&quot; Сохранение (Это не будет работать):...

Как узнать количество символов файла PlayerPrefs unity c#
При заходе в игру нужно загрузить файл сохранения и узнать количество его строк. void Awake() {...

3
146 / 92 / 58
Регистрация: 22.07.2020
Сообщений: 297
18.01.2021, 00:54 2
JamesFaraway,
Можно перевести весь класс в формат json и сохранить в PlayerPrefs.
Но не спрайт, который содержится в классе. Наверное, нужно создать отдельный класс со спрайтами, а в классе values сохранять только числовой индекс, который будет соответствовать нужному спрайту. Тогда такой класс уже можно будет сохранить в PlayerPrefs.
0
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 10
18.01.2021, 10:38  [ТС] 3
@Ronin V в этом то и проблема что мне надо использовать именно один класс, если я разделю я не смогу с ним взаимодействовать с других скриптов, json и playerprefs почему то при загрузке данных выгружают пустой массив, хотя в списке 3 элемента
0
233 / 175 / 62
Регистрация: 04.03.2019
Сообщений: 982
18.01.2021, 18:19 4
Цитата Сообщение от JamesFaraway Посмотреть сообщение
ublic Sprite sprite;
спрайт сохранить не получиться. но можно сохранить имя спрайта или номер как писалы уже выше.
и потом соединить имя с нужным спрайтом
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2021, 18:19

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сохраненить положения модальных окон и значения инпутов
использую bootstrap 3, на странице есть куча модальных окон по клику &quot;следующее&quot; одно закрывается...

PlayerPrefs
Привет, такой вопрос: у меня есть 2 сцены, и 2 переменные coins и CoinsForLevel На мне нужно...

PlayerPrefs gameObjects
Добрый день! Пытаюсь сделать сохранение состояния кнопки при перезапуске приложения. Мозгов не...

Сохранение с PlayerPrefs
Добрый день, делаю игру с несколькими уровнями, где за каждый уровень даются очки (от 64 до 1)....

Проблемы с PlayerPrefs
У меня есть настройки, в них по нажатию кнопки выключить звук, в скрипте прописано -...

PlayerPrefs не работает
Есть скрипт сохранения рекорда, вроде все правильно. Но в юньке record всегда стоит 0. Я думаю что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.