Laya的場景以及場景的加載


參考:

Laya項目發布詳解

Laya2.0 內嵌模式、加載模式、分離模式、文件模式的場景加載創建和場景打開關閉

 

版本2.1.1.1

 

白鷺中的場景是exml制作,發布后exml代碼都會打包到default.thm.json中,在項目運行時,在Main文件中加載。

Laya中的場景則提供了多種方式。

 

Laya編輯模式下F9。查看場景設置。

 

發布模式有文件模式,內嵌模式,加載模式,分離模式。 默認是文件模式。

這些模式的區別就是我的場景UI數據究竟放哪里。

 

我們現在分別用4種模式創景場景,每個場景只放一個button按鈕組件,則每個場景的ui數據就是一個按鈕。

文件模式 (默認)

文件模式不會創建場景類,只會生成場景數據。

創建TestSceneWJ場景,不會生成場景類,指的是LayaMaxUI.ts中不會自動生成如下圖中的類。

 

ui數據會生成一個單獨的TestSceneWJ.json文件,里面包含了Button的場景數據

 

打開場景

Laya.Scene.open("test/TestSceneWJ.scene");

在類里使用loadScene會去加載test/TestSceneWJ.json,加載完成后顯示界面

export default class TestSceneWJ extends Laya.View {
    constructor() { 
        super(); 
    }
createChildren():void{
   super.createChildren();
this.loadScene("test/TestSceneWJ");
} }

內嵌模式

內嵌模式會生成場景類,並且場景數據內嵌到類里。

創建內嵌場景TestSceneNQ,自動生成了場景類TestSceneNQ。並且Button的ui數據在這個類里。

 

游戲發布后,ui數據打包在bundle.js里。在微信小游戲下,這種方法占用了寶貴的初始包4m資源,所以不推薦。

 

 打開場景時,在類里使用createView使用ui數據

this.createView(TestSceneNQUI.uiView);

 

內嵌模式不能用Laya.Scene.open打開。需要自己new然后addChild。

  

加載模式

加載模式會生成場景類,ui數據會打包到一個ui.json文件里,使用時加載。

創建加載模式場景TestSceneZJ,自動生成了場景類

 

編輯模式F9,設置場景的發布模式為加載模式,然后ctrl+F12導出

 

加載模式不會生成TestSceneZJ.json的單獨文件,而是所有加載模式的場景數據都在ui.json里。

 

加載模式無法使用Laya.Scene.open打開,只能自己new,然后addChild

先加載ui.json,然后再使用

 

Laya.loader.load("ui.json", Laya.Handler.create(this, this.onLoadUI));

private onLoadUI{
    Laya.View.uiMap = Laya.loader.getRes("ui.json");
    Laya.stage.addChild(new TestSceneJZ());
}

 

 

用createView創建

export default class TestSceneZJ extends Laya.View {
    constructor() { 
        super(); 
    }

    createChildren(){
        super.createChildren();
        this.createView(Laya.View.uiMap["test/TestSceneJZ"]);
    }
}

  

 

分離模式

分離模式會創建場景類,然后生成一個單獨的場景數據json。和文件模式的區別就是:文件模式不會創建場景類。

創建分離模式場景TestSceneFL,自動生成場景類。

 

單獨的場景文件json

 

打開場景

Laya.Scene.open("test/TestSceneFL.scene")

時,在類里使用loadScene加載

this.loadScene("test/TestSceneFL");

  

 

現在我們知道了4種模式的區別。那么實際項目如何使用

內嵌模式:場景數據放在bundle.js里,占用了寶貴的初始包資源。

加載模式:和白鷺的default.thm.json一樣,將所有場景數據都放在里面一次性加載。場景數據不多時,可以考慮使用,畢竟只加載一次,減少了多場景多json的請求。

文件模式:不自動生成場景類,不太方便使用。

分離模式:將場景數據分成多個json,在使用時才去加載,減少了用戶初次進入游戲的等待時間。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM