SceneManager.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { _decorator, Component, Node, director, SceneAsset } from 'cc';
  2. import { LoadingView } from '../loadingView/LoadingView';
  3. const { ccclass, property } = _decorator;
  4. export class SceneManager{
  5. private sceneName:string;
  6. /**
  7. * 切换场景
  8. * @param sceneName
  9. */
  10. public Swicth(sceneName:string):void{
  11. this.sceneName=sceneName;
  12. LoadingView.single.Show();
  13. console.log("切换到场景:"+sceneName);
  14. director.preloadScene(sceneName,this.OnProgressHandler.bind(this),this.OnCompleteHandler.bind(this))
  15. }
  16. private OnProgressHandler(completedCount: number, totalCount: number, item: any):void{
  17. LoadingView.single.UpdateProgress(completedCount/totalCount);
  18. }
  19. private OnCompleteHandler(error: null | Error, sceneAsset?: SceneAsset):void{
  20. if(error!=null){
  21. console.error(this.sceneName+"加载错误:"+error);
  22. }
  23. director.loadScene(this.sceneName);
  24. LoadingView.single.Hide();
  25. }
  26. private static instance:SceneManager;
  27. public static get single(){
  28. if(this.instance==null){
  29. this.instance=new SceneManager();
  30. }
  31. return this.instance;
  32. }
  33. }