관리 메뉴

caLAB

겹치지 않는 랜덤한 씬 로드하기 본문

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
반응형

'Unity > 유니티 개발' 카테고리의 다른 글

01. 포톤 네트워크란 무엇인가?  (0) 2020.09.28
00. 포톤 네트워크 시작하기  (0) 2020.09.28
유니티 linearGenerator  (0) 2020.09.21
구글drive for Unity 3D  (0) 2020.09.20
유니티 Nuitrack 사용하기 - realsense  (0) 2020.06.21
Comments