2016-09-24 12 views
0

Итак, я создаю игру, когда при запуске определенного уровня она была случайным образом генерирует индекс для клонирования сборника. Мои цели - когда игрок нажал кнопку «повторить попытку», мне нужно перезагрузить сцену, но все же нужно клонировать предыдущий сборник (который получается по индексу, и индекс будет генерироваться случайным образом после запуска сцены). лучший способ сделать в реализации попробовать еще раз кнопку? когда игра была генерируется случайным образом.Как перезагрузить сцену без перезагрузки случайного сгенерированного индекса?

Это мой сценарий

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine.UI; 


public class RandomControl : MonoBehaviour { 

    public List<GameObject> prefabBG = new List<GameObject>{}; 
    GameObject newObject; 
    public static int randomIdx = -1; 
    public static bool isCloned = false; 

    public void Awake() { 
     GenerateRandom(); 
    } 
    void Start() 
    { 
     isCloned = false; 
    } 

    void Update(){ 

     GenerateRandom(); 

    } 

    void GenerateRandom(){ 
     if (randomIdx == -1) { 
      randomIdx = Random.Range (0, prefabBG.Count); 
     } 
     if (randomIdx > -1 && isCloned == false) { 
      Destroy (newObject); 
      GameObject randomBG = prefabBG [randomIdx]; 
      newObject = Instantiate (randomBG) as GameObject; 
      newObject.transform.SetParent (gameObject.transform, false); 
      isCloned = true; 
     } 
    } 

    void Restart(){ 

    } 

} 

ответ

0

выгода Pseudorandom Number Generation является то, что при том же контексте (семя), вы будете всегда получайте тот же результат. Для этого в вашем случае вы хотите отслеживать используемое вами семя (Random.Seed) и подавать его обратно в генератор, когда вам понадобится этот уровень.

Если сцена перезагружается, вам необходимо либо сериализовать семя, или вызовите следующий метод на GameObject, который будет держать его в памяти:

DontDestroyOnLoad(obj); 
+0

Я понимаю, что мне нужно сериализовать мое семя, но Как я буду сериализовать его (randomIndx) на основе моего сценария выше? – Critics

+0

Ну, у меня нет доступа к вашей базе кода, поэтому я не могу сказать, как это лучше всего сделать. Обычно я держу какой-то контроллер gameobject активным между сценами (с указанным выше методом), чтобы хранить семена и другие данные. Это то, о чем вы спрашиваете? – Augure