1) В общем , в своей самой первой сцене создаёшь объект пустой , называешь его допустим "
LevelMng".
2) На него кидаешь скрипт "
levelMngScr" с таким содержанием:
Используется javascript
function Awake () {
DontDestroyOnLoad (transform.gameObject);
}
3) После чего данный объект будут с тобой на протяжении всех твоих уровней)) То есть в него можно будет ввести переменные уровня и изменять их от уровня к уровню.
допустим так :
Используется javascript
static var level : int[];
function Start(){
level = new int[10]; //Количество уровней
level[0] = 1; // первому присваиваешь 1 так как он должен загружаться.
}
4) Потом по прохождению уровня добавляешь 1 к последующему уровню, например так
descriptionOfLevels.level[Application.loadedLevel+1] = 15) А когда пользователь жмёт на кнопки считываешь переменную данного уровня если она равна
1 значит грузить если
0 то не грузить.
6) Дальше если вдруг нужно сохранять данные в файл что бы при следующей загрузки прогресс пользователя сохранился то кидаем на объект "
LevelMng" данный скрипт с именем "
slData":
Используется javascript
import System;
import System.Collections;
import System.Xml;
import System.Xml.Serialization;
import System.IO;
import System.Text;
// То что нужно сохранить в XMLe
class DemoData
{
var level_00 : int;
var level_01 : int;
var level_02 : int;
var level_03 : int;
}
// Класс XML
class UserData
{
public var _iUser : DemoData = new DemoData();
function UserData() { }
}
static var onSave = false;
static var onLoad = false;
private var _Save : Rect;
private var _Load : Rect;
private var _SaveMSG : Rect;
private var _LoadMSG : Rect;
private var _FileLocation : String;
private var _FileName : String = "SaveData.xml";
private var myData : UserData;
private var _data : String;
private var VPosition : Vector3;
function Awake () {
_Save=new Rect(10,80,200,40);
_Load=new Rect(10,140,200,40);
_SaveMSG=new Rect(10,120,200,40);
_LoadMSG=new Rect(10,140,200,40);
_FileLocation=Application.dataPath;
myData=new UserData();
}
function Update () {
if (onLoad == true){
OnLoad();
}
if (onSave == true){
OnSave();
}
}
//Сохраняем
function OnSave(){
myData._iUser.level_00 = descriptionOfLevels.level[0];
myData._iUser.level_01 = descriptionOfLevels.level[1];
myData._iUser.level_02 = descriptionOfLevels.level[2];
myData._iUser.level_03 = descriptionOfLevels.level[3];
_data = SerializeObject(myData);
CreateXML();
onSave = false;
}
//Загружаем
function OnLoad(){
LoadXML();
if(_data.ToString() != "")
{
myData = DeserializeObject(_data);
descriptionOfLevels.level[0] = myData._iUser.level_00;
descriptionOfLevels.level[1] = myData._iUser.level_01;
descriptionOfLevels.level[2] = myData._iUser.level_02;
descriptionOfLevels.level[3] = myData._iUser.level_03;
}
onLoad = false;
}
function UTF8ByteArrayToString(characters : byte[] )
{
var encoding : UTF8Encoding = new UTF8Encoding();
var constructedString : String = encoding.GetString(characters);
return (constructedString);
}
function StringToUTF8ByteArray(pXmlString : String)
{
var encoding : UTF8Encoding = new UTF8Encoding();
var byteArray : byte[] = encoding.GetBytes(pXmlString);
return byteArray;
}
function SerializeObject(pObject : Object)
{
var XmlizedString : String = null;
var memoryStream : MemoryStream = new MemoryStream();
var xs : XmlSerializer = new XmlSerializer(typeof(UserData));
var xmlTextWriter : XmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, pObject);
memoryStream = xmlTextWriter.BaseStream; // (MemoryStream)
XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
return XmlizedString;
}
function DeserializeObject(pXmlizedString : String)
{
var xs : XmlSerializer = new XmlSerializer(typeof(UserData));
var memoryStream : MemoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString));
var xmlTextWriter : XmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
return xs.Deserialize(memoryStream);
}
// Конечный метод загрузки и сохранения для файла
function CreateXML()
{
var writer : StreamWriter;
var t : FileInfo = new FileInfo(Application.persistentDataPath+"/"+ _FileName);
if(!t.Exists)
{
writer = t.CreateText();
}
writer = t.CreateText();
writer.Write(_data);
writer.Close();
}
function LoadXML()
{
var r : StreamReader = File.OpenText(Application.persistentDataPath+"/"+ _FileName);
var _info : String = r.ReadToEnd();
r.Close();
_data=_info;
}
7) После чего дописываем в наш скрипт "
levelMngScr" строку
slData.onLoad = true; что бы при загрузке очередного уровня загружалась информация из файла.
8) Ну и логично что бы сохранить в файл вызываем
slData.onSave = true; по прохождению уровня.
Где то так это всё работает
гы... Главное пойми механику , а подстроить под свои нужды будет очень легко ... Удачи ...