Unity/유니티 개발
겹치지 않는 랜덤한 씬 로드하기
도이(doi)
2020. 6. 12. 17:19
728x90
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class sceneLoad : MonoBehaviour
{
public static sceneLoad instance = null;
private int sceneNum;
private List<int> randomList;
private void Awake()
{
if (instance == null)
instance = this;
else if (instance != this)
Destroy(gameObject);
DontDestroyOnLoad(gameObject);
//randomList에 값 넣어주기
ResetList();
}
private void Update()
{
if(Input.GetMouseButtonDown(0))
{
if (randomList.Count == 0 || randomList == null)
{
SceneManager.LoadScene(0);
ResetList();
}
else
{
Mix();
SceneManager.LoadScene(randomList[0]);
randomList.RemoveAt(0);
}
}
}
//reset List
private void ResetList()
{
//random하게 불러올 씬 넘버
randomList = new List<int>() { 1, 2, 3, 4 };
}
//chk current sceneNum
private int ChkScneNum()
{
sceneNum = SceneManager.GetActiveScene().buildIndex;
return sceneNum;
}
//shuffle
public void Mix()
{
List<int> list = new List<int>();
int count = randomList.Count;
for (int i = 0; i < count; i++)
{
int rand = Random.Range(0, randomList.Count);
list.Add(randomList[rand]);
randomList.RemoveAt(rand);
}
randomList = list;
}
}
728x90
반응형