Пятница, 29 Марта 2024, 09:32

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как измерить, много ли это займёт пространства в сохранялке? (бывшая тема String как динамически изменять какой-то символ?)
Как измерить, много ли это займёт пространства в сохранялке?
alexsilentДата: Четверг, 24 Ноября 2016, 16:20 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Хочу записывать в строку кучу перков для кучи персонажей, к примеру строка:
"000090095605" - где каждый символ имеет от 0 до 9 повышений уровня
скорее всего удобнее записывать в String,

получать номер символа со String
Код

var text : String = "009980";
...
print (text[2]); // получим третий слот

но как сделать чтобы перезаписывать конкретный номер символа/конкретный слот в тексте?
реально ли это без кучи кода? пример можно дать на C#, я надеюсь на яваскрипт также будет работать)

UPDATE:
Спасибо ребята! Решил взять такой вариант:

У каждого персонажа перки будут записаны в массив, планируется до 70-ти перков, возможно дотяну до 100,
но скорее будет меньше.
Персонажей будет где-то 20 штук.
Получается это двумерный массив, а как измерить сколько это будет весить в сохранялке?
Я не программист, а дизайнер, потому буду использовать встроенную сохранялку (свою систему сохранения я не напишу), с PlayerPrefs.SetInt.
Таких SetInt будет где-то 20 * 70 = от 1400 до 2000 (если перков будет 100).
Как измерить, много ли это займёт пространства в сохранялке? (Вроде как максимум места должно быть не больше мегабайта?)
Есть какие-то способы измерить в реестре выделенное место для сохранения игры в Unity3d?
Или проще сохранять в строку String с 70-100 символами?

PS Если взять текстовый редактор и написать строку в 70 символов по 20 полей, то файл будет весить 2 кб. Вот не знаю будет ли так весить в реестре?


Сообщение отредактировал alexsilent - Суббота, 26 Ноября 2016, 07:47
EchoITДата: Четверг, 24 Ноября 2016, 17:24 | Сообщение # 2
старожил
Сейчас нет на сайте
alexsilent, Строка - массив символов. Почему бы не использовать тогда массив, причём просто из целочисленных значений? Ведь туда символы записываться не будут, только цифры. Если нужно динамически изменять размер, то можно использовать List.

Долгожданный анонсик: State of War

Сообщение отредактировал EchoIT - Четверг, 24 Ноября 2016, 17:25
1nt3g3rДата: Четверг, 24 Ноября 2016, 18:53 | Сообщение # 3
почетный гость
Сейчас нет на сайте
alexsilent, в C# строки Immutable (поэтому ты не сможешь в String изменить любой символ). Как уже сказали - используй или массив, или List.

Нужно писать такие игры, чтобы в них было интересно играть самому
ReanДата: Пятница, 25 Ноября 2016, 00:07 | Сообщение # 4
участник
Сейчас нет на сайте
Присоединяясь к высказываниям выше, добавлю, что если уж сильно хочется, то в C# есть такое пространство:
Код
using System.Text;

В котором находится класс StringBuilder. Вот пример использования:
Код

    string test = "12345";    // Исходная строка

    void Start () {

        StringBuilder temp = new StringBuilder(test);
        temp[2] = '!';
        test = temp.ToString();  // Результирующая строка
        Debug.Log(test);
    }
// Результат: 12!45

Либо можно использовать StringBuilder для этих целей изначально. Но выше уже предложили более очевидную альтернативу. В общем, есть из чего выбрать)


Сообщение отредактировал Rean - Пятница, 25 Ноября 2016, 00:08
EchoITДата: Пятница, 25 Ноября 2016, 10:31 | Сообщение # 5
старожил
Сейчас нет на сайте
Rean, я не стал предлагать, т.к. на мой взгляд, это уже "куча кода". :D А так да - если нужно прямо такое, то только через StringBuilder (насколько мне известно).

Долгожданный анонсик: State of War
alexsilentДата: Суббота, 26 Ноября 2016, 08:24 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Спасибо ребята! Решил взять такой вариант:

У каждого персонажа перки будут записаны в массив, планируется до 70-ти перков, возможно дотяну до 100,
но скорее будет меньше.
Персонажей будет где-то 20 штук.
Получается это двумерный массив, а как измерить сколько это будет весить в сохранялке?
Я не программист, а дизайнер, потому буду использовать встроенную сохранялку (свою систему сохранения я не напишу), с PlayerPrefs.SetInt.
Таких SetInt будет где-то 20 * 70 = от 1400 до 2000 (если перков будет 100).
Как измерить, много ли это займёт пространства в сохранялке? (Вроде как максимум места должно быть не больше мегабайта?)
Есть какие-то способы измерить в реестре выделенное место для сохранения игры в Unity3d?
Или проще сохранять в строку String с 70-100 символами?

PS Если взять текстовый редактор и написать строку в 70 символов по 20 полей, то файл будет весить 2 кб. Вот не знаю будет ли так весить в реестре?

Добавлено (26 ноября 2016, 08:24)
---------------------------------------------
И ещё один вопрос:
Насколько длинный String (сколько символов максимум) может быть вообще для сохранения в PlayerPrefs.SetString
100 символов это же норма?


Сообщение отредактировал alexsilent - Суббота, 26 Ноября 2016, 08:24
ReanДата: Суббота, 26 Ноября 2016, 13:46 | Сообщение # 7
участник
Сейчас нет на сайте
alexsilent, строка значения в реестре Windows может содержать не более 16383 символов (если тип строки REG_QWORD, 64-бит, то получается как раз 1 мегабайт). Но мне кажется, это не самый оптимальный вариант. А если решишь портировать игру на другие устройства, то и там могут вылезти какие-нибудь ограничения. Как вариант: пересмотреть способ и структуру хранения данных перков. Может не надо хранить все, а только те которые имеются? Подумай о том, как бы упростить хранение данных, есть ли какие-нибудь зависимости и т.д. В крайнем случае, конечно, можно и так оставить или использовать запись в файл.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как измерить, много ли это займёт пространства в сохранялке? (бывшая тема String как динамически изменять какой-то символ?)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг