【Cocos入门】场景切换(loadScene、preloadScene)

在这里插入图片描述

一、loadScene 加载场景

  • loadScene(sceneName: string, onLaunched: Director.OnSceneLaunched, onUnloaded: Director.OnUnload) : boolean
    通过场景名称进行加载场景。返回值为布尔类型

参数:

Name Type Description
sceneName string 场景名称
onLaunched Director.OnSceneLoaded 加载回调
onUnloaded Director.OnUnload -

关于 loadScene 更多详情
示例:

    gamestartHandler(){
    
    
        cc.director.loadScene("Game",()=>{
    
    
		console.log("新场景已加载并切换完成")
		})
    }

二、preloadscene 预加载场景

  • preloadScene(sceneName: string, onLoaded: Director.OnSceneLoaded) : void
    预加载场景,你可以在任何时候调用这个方法。 调用完后,你仍然需要通过 director.loadScene 来启动场景,因为这个方法不会执行场景加载操作。
    就算预加载还没完成,你也可以直接调用 director.loadScene,加载完成后场景就会启动。

参数:

Name Type Description
sceneName string 场景名称
onLoaded Director.OnSceneLoaded 加载回调
  • preloadScene(sceneName: string, onProgress: Director.OnLoadSceneProgress, onLoaded: Director.OnSceneLoaded) : void
    预加载场景,你可以在任何时候调用这个方法。 调用完后,你仍然需要通过 director.loadScene 来启动场景,因为这个方法不会执行场景加载操作。
    就算预加载还没完成,你也可以直接调用 director.loadScene,加载完成后场景就会启动。

参数:

Name Type Description
sceneName string 场景名称
onProgress Director.OnLoadSceneProgress 加载进度回调
onLoaded Director.OnSceneLoaded 加载回调

关于 preloadscene 更多详情
示例:

    //是否加载完成
    isNewSceneLoaded = false;
    start () {
    
    
        let pb=cc.find("ProgressBar");
        pb.active = true;
        cc.director.preloadScene("Game",(ccnt:number,tcnt:number,item)=>{
    
    
            console.log(tcnt+"=>"+ccnt)
            let progress=ccnt/tcnt;
            pb.getComponent(cc.ProgressBar).progress=progress;
            
        },(error:Error)=>{
    
    
            this.isNewSceneLoaded=true;
        })
    }

    gamestartHandler(){
    
    
        if(this.isNewSceneLoaded){
    
    
            cc.director.loadScene("Game",()=>{
    
    
                console.log("新场景已加载并切换完成")
            })
        }
    }