目前我正在爲我的遊戲化項目開發測驗類遊戲。當玩家達到某個分數並且出現問題時,我凍結實際遊戲。如果答案是正確的,它會提高玩家的速度,並且會在一個循環中發生。如何在不重複統一的情況下生成隨機數據C#
在這裏,我使用的是loadscene來加載索引場景,以避免重複問題。這裏的問題是當場景加載時重新加載整個遊戲而不是重新加載測驗部分。有什麼辦法可以做到嗎?
public class GameManager : MonoBehaviour
{
public Question[] facts;
private static List<Question> unansweredfacts;
private Question currentfacts;
[SerializeField]
private Text FactText;
[SerializeField]
private float TimeBetweenFacts = 3f;
[SerializeField]
private Text TrueAnswerText;
[SerializeField]
private Text FalseAnswerText;
[SerializeField]
private Animator animator;
[SerializeField]
public GameObject canvasquiz;
void Start()
{
if (unansweredfacts == null || unansweredfacts.Count == 0)
{
unansweredfacts = facts.ToList<Question>();
}
SetCurrentfact();
Debug.Log(currentfacts.Fact + "is" + currentfacts.IsTrue);
}
void SetCurrentfact()
{
int RandomFactIndex = Random.Range(0, unansweredfacts.Count);
currentfacts = unansweredfacts[RandomFactIndex];
FactText.text = currentfacts.Fact;
if (currentfacts.IsTrue)
{
TrueAnswerText.text = "CORRECT !";
FalseAnswerText.text = "WRONG !";
}
else
{
TrueAnswerText.text = "WRONG !";
FalseAnswerText.text = "CORRECT !";
}
}
IEnumerator TransitionToNextFact()
{
unansweredfacts.Remove(currentfacts);
yield return new WaitForSeconds(TimeBetweenFacts);
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
public void UserSelectTrue()
{
animator.SetTrigger("True");
if (currentfacts.IsTrue)
{
Debug.Log("CORRECT !");
}
else
{
Debug.Log("WRONG !");
}
StartCoroutine(TransitionToNextFact());
}
public void UserSelectFalse()
{
animator.SetTrigger("False");
if (!currentfacts.IsTrue)
{
Debug.Log("CORRECT !");
}
else
{
Debug.Log("WRONG !");
}
StartCoroutine(TransitionToNextFact());
}
可能的重複[Randomize a List](http://stackoverflow.com/questions/273313/randomize-a-listt) –