Запрет на сохранение TerrainData

Speed Tree : Terrain & Trees.

Запрет на сохранение TerrainData

Сообщение Иван Кулибинъ 13 июл 2016, 10:33

Во время игры модифицирую террайн, и изменения карты высот, естественно, записываются в файл ассета.

Можно ли как-то запретить запись, чтобы при следующей загрузке игры можно было начать с исходной карты высот?

Ну или как восстанавливать террайн из бэкапа?

Подскажите, пожалуйста, если кто знает.
Аватара пользователя
Иван Кулибинъ
UNец
 
Сообщения: 11
Зарегистрирован: 13 июл 2016, 10:26
  • Сайт

Re: Запрет на сохранение TerrainData

Сообщение jetyb 13 июл 2016, 12:05

TerrainData хранит все данные.
Можно создать, назначить и изменять копию террейндаты.

Или загружать и изменять террейндату, загруженную из бандлов.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Запрет на сохранение TerrainData

Сообщение Иван Кулибинъ 13 июл 2016, 12:23

Можно создать, назначить и изменять копию террейндаты.

А как создать копию? Через System.IO или класс AssetDatabase? Я никогда с таким не работал.

Или загружать и изменять террейндату, загруженную из бандлов.

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

И ещё, бандл собирается под целевую платформу, насколько я понимаю. Если у меня 30 террейнов и поддержка Linux, MacOS и Windows, то мне нужно сделать минимум три бандла с 30 террейнами в каждом, я правильно думаю?
Аватара пользователя
Иван Кулибинъ
UNец
 
Сообщения: 11
Зарегистрирован: 13 июл 2016, 10:26
  • Сайт

Re: Запрет на сохранение TerrainData

Сообщение jetyb 13 июл 2016, 13:10

А как создать копию? Через System.IO или класс AssetDatabase? Я никогда с таким не работал.

Через класс TerrainData. У него там есть куча методов типа SetHeights/GetHeights, SetDetails, SetTextures, SetTrees

Плюс, бандл это ведь файл на диске, если на него поставить ссылку, то изменения террейна запишутся прямо в него?

Бандл - это файл на диске. Загруженный в рантайме бандл - это область данных в оперативной памяти, изменения в загруженном бандле не перезапишутся на диск.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Запрет на сохранение TerrainData

Сообщение Иван Кулибинъ 13 июл 2016, 13:32

Через класс TerrainData. У него там есть куча методов типа SetHeights/GetHeights, SetDetails, SetTextures, SetTrees
Сильно не хочется вручную читать вершины, складировать их куда-то, а потом восстанавливать.

На мой взгляд, самое простое - это тупо запретить записывать изменения в файл. Но такой возможности нет. Поэтому из простых остаётся следующий вариант - скопировать файл ассета при старте уровня. Но этого я не умею делать :)
Аватара пользователя
Иван Кулибинъ
UNец
 
Сообщения: 11
Зарегистрирован: 13 июл 2016, 10:26
  • Сайт

Re: Запрет на сохранение TerrainData

Сообщение Diab10 28 июл 2016, 11:28

Для бекапа/восстановления террейна: https://www.assetstore.unity3d.com/en/#!/content/58895

Ну и изменять файл террейна можно только в редакторе. Если в игре менять террейн, то при след. запуске всё будет в первоначальном виде
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023


Вернуться в Земля и деревья.

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

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