using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ShapeFactory : MonoBehaviour {
Scene poolScene;
int loadedLevelBuildIndex = 0;
void CreatePools()
{
//Scene是结构体
if (Application.isEditor)
{
//通过名字获取场景
poolScene = SceneManager.GetSceneByName(name);
if (poolScene.isLoaded)//判断场景是否加载了
{
//获取场景中所有的root物体
GameObject[] rootObjects = poolScene.GetRootGameObjects();
return;
}
}
//动态创建一个新场景
poolScene = SceneManager.CreateScene(name);
}
IEnumerator LoadLevel(int levelBuildIndex)
{
enabled = false;
if (loadedLevelBuildIndex > 0)
{
//异步卸载index场景 index为buildsetting中右边的数字
yield return SceneManager.UnloadSceneAsync(loadedLevelBuildIndex);
}
//异步以叠加的方式加载场景
yield return SceneManager.LoadSceneAsync(levelBuildIndex, LoadSceneMode.Additive);
//设置这个场景为激活状态,表示实例化的物体放到这个场景下和使用这个场景的灯光设置
SceneManager.SetActiveScene(
SceneManager.GetSceneByBuildIndex(levelBuildIndex)
);
loadedLevelBuildIndex = levelBuildIndex;
enabled = true;
}
public void SetInScene(GameObject go)
{
if (poolScene.isLoaded)
{
//将物体放到某个场景中
SceneManager.MoveGameObjectToScene(go, poolScene);
}
}
}