Пятница, 29 Ноября 2024, 12:19

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Сохранение в файл
DemonakorДата: Пятница, 21 Июня 2013, 00:26 | Сообщение # 1
уже был
Сейчас нет на сайте
Кто может помочь? По этому уроку пытался сделать сохранение и загрузку уровней с созданием истории... Только возникли проблемы:
1) Как не перезаписывать имеющийся файл сохранений, а создавать новые строчки в уже имеющимся файле?
Код
using UnityEngine;
using System.Collections;
using System.IO; // Используем библиотеку ввода вывода

public class Slevel : MonoBehaviour {
   
  public string filename; // Путь сохранения
   
   
  void Start () // Данный скрипт выполняется при инициализации объекта.
  {
   if ( filename == "" ) filename = "Save/Save.txt";  
   // Если название файла не указанно то пишем по умолчанию
  }
   
  void OnGUI () // Создаем ГУИ элементы, текстовое поле и 2 кнопки
  {
   if ( GUI.Button( new Rect(10,10,60,20),"Write") ) // Нажата кнопка "запись"?
   {
   StreamWriter sw = new StreamWriter(filename); // Создаем файл
    sw.WriteLine(Application.loadedLevel); // Пишем название уровня
    sw.Close(); // Закрываем(сохраняем)
   }
  }
}


2) В скрипте загрузки выдаёт ошибку error CS1955: The member 'UnityEngine.Application.loadedLevel' cannot be used as method or delegate
Код
using UnityEngine;
using System.Collections;
using System.IO;

public class Llevel : MonoBehaviour {
   
  public float Level;
   
  // Use this for initialization
  void OnGUI () // Создаем ГУИ элементы, текстовое поле и 2 кнопки
   {
   if ( GUI.Button( new Rect(10,40,60,20),"Read") ) // Нажата кнопка "читать"?
    {
    StreamReader streamReader = new StreamReader("Save/Save.txt"); // Открываем файл
    if(streamReader != null) {
     while (!streamReader.EndOfStream) // Читаем строки пока они не закончатся
     {
     Level = System.Convert.ToSingle(streamReader.ReadLine());
     }
    }        
    }
    Application.loadedLevel(Level);
  }
}


3) И как сделать, чтобы при загрузке предыдущего уровня из текстового файла загружалась соответственно последняя строчка, а потом удалялась? Такое в Unity вообще реально сделать, или надо для этого разные файлы создаать?

В общем суть такая:
Допустим есть 4 уровня (на самом деле их гораздо больше). От уровня 1 к 4 можно пройти двумя путями - соответственно через 2 или через 3. Так вот если прошёл 1 > 2 > 4, то вернуться можно только обратно 4 > 2 > 1.
Собственно делаю скорее не игру, а программу. И единственная проблема - создать эту историю посещений.

4
/ \
2 3
\ /
1
PoqXertДата: Пятница, 21 Июня 2013, 02:33 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
PlayerPrefs

Расширения для Unity3D
Блог программиста - PoqXert.ru
seamanДата: Пятница, 21 Июня 2013, 08:47 | Сообщение # 3
старожил
Сейчас нет на сайте
Изучаем StreamWriter в частности параметр конструктора append
DemonakorДата: Вторник, 25 Июня 2013, 15:46 | Сообщение # 4
уже был
Сейчас нет на сайте
seaman
По твоей ссылке почти всё нашёл и сделал, но остался единственный вопрос с удалением последней стоки в файле.

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


Сообщение отредактировал Demonakor - Среда, 26 Июня 2013, 01:24
  • Страница 1 из 1
  • 1
Поиск:

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