|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
#if UNITY_5_3_OR_NEWER
|
|
|
|
|
|
using UnityEngine.SceneManagement;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
using FairyGUI;
|
|
|
|
|
|
|
|
|
|
|
|
public class LevelManager : MonoBehaviour
|
|
|
|
|
|
{
|
|
|
|
|
|
static LevelManager _instance;
|
|
|
|
|
|
public static LevelManager inst
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_instance == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject go = new GameObject("LevelManager");
|
|
|
|
|
|
DontDestroyOnLoad(go);
|
|
|
|
|
|
_instance = go.AddComponent<LevelManager>();
|
|
|
|
|
|
}
|
|
|
|
|
|
return _instance;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
GComponent _cutSceneView;
|
|
|
|
|
|
GComponent _mainView;
|
|
|
|
|
|
|
|
|
|
|
|
public LevelManager()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void Init()
|
|
|
|
|
|
{
|
|
|
|
|
|
_cutSceneView = UIPackage.CreateObject("CutScene", "CutScene").asCom;
|
|
|
|
|
|
_cutSceneView.SetSize(GRoot.inst.width, GRoot.inst.height);
|
|
|
|
|
|
_cutSceneView.AddRelation(GRoot.inst, RelationType.Size);
|
|
|
|
|
|
|
|
|
|
|
|
_mainView = UIPackage.CreateObject("CutScene", "Main").asCom;
|
|
|
|
|
|
_mainView.SetSize(GRoot.inst.width, GRoot.inst.height);
|
|
|
|
|
|
_mainView.AddRelation(GRoot.inst, RelationType.Size);
|
|
|
|
|
|
|
|
|
|
|
|
_mainView.GetChild("n0").onClick.Add(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
LoadLevel("scene1");
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
_mainView.GetChild("n1").onClick.Add(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
LoadLevel("scene2");
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void LoadLevel(string levelName)
|
|
|
|
|
|
{
|
|
|
|
|
|
StartCoroutine(DoLoad(levelName));
|
|
|
|
|
|
GRoot.inst.AddChild(_cutSceneView);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
IEnumerator DoLoad(string sceneName)
|
|
|
|
|
|
{
|
|
|
|
|
|
GRoot.inst.AddChild(_cutSceneView);
|
|
|
|
|
|
GProgressBar pb = _cutSceneView.GetChild("pb").asProgress;
|
|
|
|
|
|
pb.value = 0;
|
|
|
|
|
|
#if UNITY_5_3_OR_NEWER
|
|
|
|
|
|
AsyncOperation op = SceneManager.LoadSceneAsync(sceneName);
|
|
|
|
|
|
#else
|
|
|
|
|
|
AsyncOperation op = Application.LoadLevelAsync(sceneName);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
float startTime = Time.time;
|
|
|
|
|
|
while (!op.isDone || pb.value != 100)
|
|
|
|
|
|
{
|
|
|
|
|
|
int value = (int)((Time.time - startTime) * 100f / 3f);
|
|
|
|
|
|
if (value > 100)
|
|
|
|
|
|
value = 100;
|
|
|
|
|
|
pb.value = value;
|
|
|
|
|
|
yield return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
GRoot.inst.RemoveChild(_cutSceneView);
|
|
|
|
|
|
GRoot.inst.AddChild(_mainView);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|