所以,我制作了一个游戏,当某个级别开始时,它会随机生成一个索引来克隆预制件。我的目标是当玩家按下“再试一次”按钮我需要重新加载场景但是它仍然需要克隆前一个预制件(通过索引获得,并且索引将在场景开始后随机生成。什么是当游戏随机生成时,实施“再试一次”按钮的最佳方式。
这是我的剧本
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 :(得分:0)
Pseudorandom Number Generation
的好处是,给定相同的上下文(种子),您将始终获得相同的结果。
因此,在您的情况下,您希望跟踪您使用的种子(Random.Seed
),并在需要该级别时将其反馈给生成器。
如果重新加载场景,则需要序列化种子,或者在游戏对象上调用以下方法将其保留在内存中:
DontDestroyOnLoad(obj);