示例#1
0
    IEnumerator waitForSceneLoad(int sceneNumber)
    {
        while (SceneManager.GetActiveScene().buildIndex != sceneNumber)
        {
            yield return(null);
        }

        // Do anything after proper scene has been loaded
        if (SceneManager.GetActiveScene().buildIndex == sceneNumber)
        {
            if (SceneManager.GetActiveScene().buildIndex == 1)
            {
                //Debug.Log(SceneManager.GetActiveScene().buildIndex);
                //initialize player
                pc = GameObject.FindWithTag("Player").GetComponent <PlayerControlls>();
                if (saveOnLoad)
                {
                    mh.CreateNewMap();
                    pc.seed = new int[] { mh.tl, mh.tc, mh.tr, mh.ml, mh.mc, mh.mr, mh.bl, mh.bc, mh.br };
                    SaveSystem.SavePlayer(pc);
                    cachedGold = pc.gold;
                }
                else
                {
                    PlayerData data = SaveSystem.LoadPlayer();
                    if (startingLevel)
                    {
                        data.position = new float[3] {
                            -10, -10, 0
                        }
                    }
                    ;
                    pc.LoadFromSave(data);
                    mh.SetSeed(pc.seed[0], pc.seed[1], pc.seed[2], pc.seed[3], pc.seed[4], pc.seed[5], pc.seed[6], pc.seed[7], pc.seed[8]);
                    mh.CreateMap();
                    mh.SetAStarGrids();
                    foreach (GameObject item in queuedItems)
                    {
                        item.GetComponent <Item>().Pickup(pc);
                        pc.gold = cachedGold;
                    }
                    queuedItems = new List <GameObject>();
                }
            }
            if (SceneManager.GetActiveScene().buildIndex == 2)
            {
                sash.Stock();
            }
        }
    }
}