Страница 1 из 1

Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 16:16
Max29
Здравствуйте друзья, при разработке проекта, возник такой вопрос. Есть множество объектов расположенных на сцене, у этих объектов есть переменная типа bool. Игрок может взаимодействовать с этими объектами: уничтожая их через функцию Destroy(), или изменять переменную bool. Подскажите, или натолкните в каком направление думать чтобы организовать сохранение статусов bool и уничтожен ли объект. Чтобы при следующем запуске уничтоженных объектов не было а переменная bool была как в предыдущей сессии. Свои мысли опишу ниже.

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 17:29
Max29
Каждому объекту присваиваем числовой индекс от 0 и далее. В объекте пустышке создаем одномерный массив индекс которого будет соответствовать индексу объекта, после каждой манипуляции с объектом изменяем соответствующий элемент массива на значение (0 - объект удален; 1 - объект не удален, bool = false; 2 - объект не удален, bool = true) и записываем все значения массива в строку, сохраняем эту строку в файл. Это сохранение. При загрузке считываем строку из файла и вводим эти данные в массив, и следом изменяем объекты исходя из соответсвенного числового кода. Такой алгоритм приемлем или есть менее изощренный вариант?

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 17:39
krauser0993
вполне норм, сильной нагрузки быть не должно, только объекты удаляй не через Destroy а через SetActive

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 17:56
Max29
krauser0993 писал(а):вполне норм, сильной нагрузки быть не должно, только объекты удаляй не через Destroy а через SetActive

Спасибо за ответ, но возникает вопрос почему через setActive в этом же случае в сцене присутствует уже совсем ненужный объект, а при Destroy он полностью убирается из сцены?

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 18:25
1max1
Нет смысла использовать SetActive на:
1. Уникальных объектах, которые нельзя переиспользовать.
2. Объектах, которые не занимают много места в памяти.
3. Если иерархия удаляемого объекта небольшая.
Сам Destroy тяжелый метод, и все удаляшки можно было бы производить где-то в окне загрузки, к примеру, при переходе между сценами. Но я почему-то уверен что твои объекты не вызовут падение фпс при их удалении.

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 18:42
Max29
Я тоже думаю что в моем случае Destroy не должен вызвать просадки. В сцене присутствует около сотни объектов которые являются туманом войны в небольшой стратегии, переменная bool отвечает за то можно ли разведать эту область, если область можно разведать то при выполнение некоторых условий ее можно удалить. Все это происходит в пошаговом режиме т.е. метод update не используется.

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 19:55
krauser0993
если на комп то забей, если мобилки то лучше забыть о таких методах.
если единоразово то ок, но если при загрузке 1000 destroy, то у чела просто телефон взорвется и он сразу побежит оставлять негативный отзыв)

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 20:05
Max29
krauser0993 писал(а):если на комп то забей, если мобилки то лучше забыть о таких методах.
если единоразово то ок, но если при загрузке 1000 destroy, то у чела просто телефон взорвется и он сразу побежит оставлять негативный отзыв)

Для мобилы, спасибо за предупреждение тогда буду юзать .SetActive(false);.

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 20:15
krauser0993
Max29 писал(а): Для мобилы, спасибо за предупреждение тогда буду юзать .SetActive(false);.

там много нюансов, самое главное все материалы ставь Mobile/Diffuse и объединяй все меши в один, я например использую Mesh Combine Studio
Также прочитай про лоды, смотри батчи, желательно не более 100, с опытом разберешься короче)

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 20:20
Max29
krauser0993 писал(а):
Max29 писал(а): Для мобилы, спасибо за предупреждение тогда буду юзать .SetActive(false);.

там много нюансов, самое главное все материалы ставь Mobile/Diffuse и объединяй все меши в один, я например использую Mesh Combine Studio
Также прочитай про лоды, смотри батчи, желательно не более 100, с опытом разберешься короче)

Спасибо большое за ответ! Да буду изучать материал дальше. Прочитал уже тонну литературы, но когда дело дошло до собственного проекта начало возникать много вопросов)) Но процесс решения этих проблем мне интересен)

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 20:55
1max1
Дестрой не такой уж и страшный метод, а наоборот полезный. И на телефоне его тоже можно использовать, я бы даже сказал нужно, особенно на телефонах, у которых мало оперативной памяти. Само собой не стоит вызывать его на тысячах объектах в одном кадре, но и в крайности ударяться не стоит.

Re: Сохранение параметров обьектов.

СообщениеДобавлено: 20 ноя 2022, 22:07
Max29
1max1 писал(а):Дестрой не такой уж и страшный метод, а наоборот полезный. И на телефоне его тоже можно использовать, я бы даже сказал нужно, особенно на телефонах, у которых мало оперативной памяти. Само собой не стоит вызывать его на тысячах объектах в одном кадре, но и в крайности ударяться не стоит.

Вам тоже спасибо. Подробней изучу метод Destroy. Множество вызовов этого метода не будет, разовая акция с большими интервалами времени. ну а насчет оперативы в современных телефонах то она сейчас гигобайтами исчесляется.