Создайте свою структуру классов/списков итд для сохранения мира из обычных C# классов с публичными свойствами и и публичными пустыми конструкторами. Сохраните все свои данные в эту структуру и сериализуйте в файл. Для сериализации выберите любой из предоставленных ассетов для бинарных форматов и скормите ему ваши классы/списки:
https://assetstore.unity.com/search?q=bson или
https://assetstore.unity.com/search?q=messagepack
Хотя на самом деле JSON местами компактнее BSON, и его тоже можно использовать.
JSON.NET неплох. Если нужна мультиплатформа то вот
JSON & MessagePack работает везде.
Для того что бы выбрать папку для сохранения можно воспользоваться следующим кодом:
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN || UNITY_WP8
var appData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
#else
var appData = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
#endif
Для создания файла в этой папке можно использовать следующий код:
using(var writer = File.CreateText(Path.Combine(appData , "mysave.json")) {
Для непосредственного сохранения в файл с Json.NET:
var serializer = new JsonSerializer();
serializer.Serialize(writer, myData)
Ну, и совет напоследок, не сохранять каждый раз в один и тот же файл, а делать это последовательно в разные файлы, на случай "битого" сохранения.