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,在使用时才去加载,减少了用户初次进入游戏的等待时间。
Laya的场景以及场景的加载的更多相关文章
- laya在微信小游戏中加载BitmapFont失效的问题
发布为微信小游戏后,在微信工具中测试时总是提示加载retry to load TheRed.fnt,并以error告终.由于没有任何出错信息,无奈之下只好阅读源码.对BitmapFont的处理分为两个 ...
- Unity加载场景、计时器、加载时不销毁某物体
异步加载场景,SceneManager.LoadSceneAsync(SceneName);需引用 using UnityEngine.SceneManagement;命名空间, Applicatio ...
- Promise场景实例之图片加载
所有图片加载完再添加到页面 { // 所有图片加载完再添加到页面 function loadImg(src) { return new Promise(function (resolve, rejec ...
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel(“yourScene ...
- 利用青瓷布局自定义加载的场景,而不是自己改写qici-loading
加载界面如果全部通过自己手动布局不仅不美观,还很难控制.借用原生的场景切换加载效果,来实现我们游戏的加载效果. 没有做加载修改的原来的加载顺序: 黑乎乎界面->(游戏定制的加载)你的第一个场 ...
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条
Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...
- Unity 异步加载场景
效果图如下: 今天一直在纠结如何加载场景,中间有加载画面和加载完毕的效果动画! A 场景到 B , 看见网上的做法都是 A –> C –> B. C场景主要用于异步加载B 和 播放一些 ...
- Unity3d 动态加载场景物件与缓存池的使用
聊聊Unity3d动态加载场景物件那些事儿. 众所周知,在策划或美术设计完游戏场景地图后,一个场景中可能会存在成千上万个小的物件,比如石头,木箱子,油桶,栅栏等等等等,这些物件并不是游戏中的道具,仅仅 ...
- unity 5.3 以后加载场景
记录下官方建议的加载场景的方法: StartCoroutine(LoadYourAsyncScene()); IEnumerator LoadYourAsyncScene() { // The App ...
- Cocos Creator 加载和切换场景(官方文档摘录)
Cocos Creator 加载和切换场景(官方文档摘录) 在 Cocos Creator 中,我们使用场景文件名( 可以不包含扩展名)来索引指代场景.并通过以下接口进行加载和切换操作: cc.dir ...
随机推荐
- c-free gcc.exe: cannot specify -o with -c or -S and multiple compilations的解决方法
win10上打算使用c-free,因为xp win7时代都用过,写c代码还是比较方便的,尤其是5.0版本,但是在win10上面,c-free 5.0版本没有c-free 4好用,c-free 4启动更 ...
- python_requests ~爬虫~小视频~~~
当一只小小的Py_Spider也有一段时间了, 期间,更多的时间是在爬取图片啊, 文字, 文档这类的东西, 今天突然一时兴起, 来爬一手视频! 所以就找到了远近闻名的六间房(六扇门)哈哈,~~~ 1. ...
- python - djanog (静态文件)
# 在 setting 文件中的 static ,通过这个方法(别名) 可以拼接到其它文件夹中的文件 # 第一步: 导入 # {% load static %} # 第二步: 查找 static (别 ...
- 学习Spring-Data-Jpa(二)---JPA基本注解
基本注解 1.@Entity :用于添加在实体类上,定义该JAVA类成为被JPA管理的实体,将映射到指定的数据库表.如定义一个实体类Category,它将映射到数据库中的category表中. 2.@ ...
- 99: AGC-018C 堆+思维
$des$有 $X + Y + Z$ 个人,第 $i$ 个人有 $A_i$ 个金币,$B_i$ 个银币,$C_i$ 个铜币.选出 $X$ 个人获得其金币,选出 $Y$ 个人获得其银币,选出 $Z$ 个 ...
- Codevs 3160 最长公共子串(后缀数组)
3160 最长公共子串 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长 ...
- Day16:小前端
回到顶部 <style type="text/css"> body { height: 8000px; } h1 { color: #000; } img { posi ...
- VMware安装VMwaretools
默认点击“安装VMware Tools(T)”选项下载好安装包 下载的安装包放在计算机的media目录下 进入/media/ubuntu14-04/VMware Tools目录: cd /media/ ...
- [内网渗透]lcx端口转发
0x01 简介 lcx是一款端口转发工具,有三个功能: 第一个功能将本地端口转发到远程主机某个端口上 第二个功能将本地端口转发到本地另一个端口上 第三个功能是进行监听并进行转发使用 Lcx使用的前提是 ...
- 膜态沸腾UDF【转载】
膜态沸腾的UDF,添加注释.其中获取VOF梯度的方法详见前面的日志,其中很多宏无法通过UDF手册查阅, 蒸汽相中的质量源项的一般形式为: 式中: 通过一阶近似,热流之差可表达为: 式中: 通过此近似, ...