You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
| 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);
 | |
|     }
 | |
| }
 |