2014-09-01 3 views
0

Теперь я понимаю, что этот вопрос задают много, и я заверяю вас, что я много сделал для этого, попробовал некоторые скрипты и попробовал сериализатор из хранилища активов единства. но я просто не могу найти то, что мне нужно.Сохранить/загрузить в unity3d

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

Что я нашел в google, так это то, как сохранить все объекты и вещи, которые произошли на уровне, но мне не нужно экономить на уровне, мои уровни действительно короткие и можно играть за 1 ход.

EDIT: это сценарий, где я хотел бы добавить от 1 до levelIndex после игрока бьет уровень и моя цель после того, как игрок нажимает нагрузки в StartMenu, новое всплывающее меню, и игрок сможет выбрать из всех разблокированных уровней и после выбора уровень загрузится.

(что я в настоящее время по этому вопросу находится на // линиях)

#pragma strict 
var normalParticle : ParticleSystem; 
var teleportParticle : ParticleSystem; 
var teleportSound : AudioClip; 
var ignoreListenerPause: boolean; 
// var levelIndex : int; 
function Start() { 
    teleportParticle.Stop(); 
} 

function OnTriggerEnter(other : Collider) 
{ 
    if(other.tag == "Player"){ 
     teleportParticle.Play(); 
     normalParticle.Stop(); 
     for (var o : GameObject in GameObject.FindGameObjectsWithTag("Virus")) 
     { 
      var comp : Component = o.GetComponent(ChaseScript); 
      if (comp != null) 
      { 
       comp.active = false; 
      } 
     } 
     yield WaitForSeconds (0.5); 
     audio.ignoreListenerPause = true; 
     audio.PlayOneShot(teleportSound); 
     yield WaitForSeconds (3.9); 
     //levelIndex++; 
     //PlayerPrefs.SetInt("Last_Level", levelIndex); 
     Application.LoadLevel(Application.loadedLevel+1); 
    } 
} 

function OnTriggerExit(other : Collider) 
{ 

    teleportParticle.Stop(); 
    normalParticle.Play(); 

} 

я нашел учебник раньше, объясняющий, как добиться того, что я хотел, но это не является эффективным для игры с большим количеством уровней , он использует сценарий для каждого уровня завершен и использует if's для каждого уровня, и моя игра будет иметь около 50, поэтому я бы предпочел лучший/более чистый способ, вот видео: http://forum.unity3d.com/threads/unity-level-unlocking-system-using-playerprefs.146955/. Вы можете увидеть его сценарии в 10:10 и 14:14.

заранее спасибо :)

+0

кажется JSON может быть излишним для вашей проблемы, я обновил свой ответ. – Imapler

ответ

0

Если данные достаточно прост, как только один или два переменных, когда переходите к шагу 3.

  1. Создать класс для хранения данных о прогрессировании
  2. Serialize класс с JSON, чтобы получить строку
  3. хранить данные в PlayerPrefs

Sa ве

PlayerPrefs.SetInt("Last_Level", levelIndex); 
PlayerPrefs.Save(); 

Load

int levelIndex = PlayerPrefs.GetInt("Last_Level", 0); 
+0

спасибо за ваш ответ, я пробовал это в течение последнего часа, чтобы заставить его работать, но я думаю, что json слишком сложна для меня прямо сейчас, у меня уже есть проблемы с использованием PlayerPrefs, которые должны быть намного проще, чем json из что я читал в Интернете. Также я работаю в singlescript, потому что я нахожу это проще, чем C#, и почти все, что я мог найти о примерах json, было в C# , так как у меня не будет достаточно символов в этом комментарии, я отредактирую свой вопрос с более подробной информацией, если вы могли бы предоставить мне примеры, я думаю, что смогу понять это намного проще :) спасибо заранее –