如何避免UI一次性加入场景

新手帖,刚接触Creator不久,一个问题一直困扰着,就是所有游戏UI,一次性放到场景里,加载无用的资源太多了,今天偶然得知一种方法,使用预制资源,一开始不使用的资源,使用预制资源,需要的时候加载进来,不需要的时候移除掉,各位大神,如果有什么更好的方法,还希望赐教。

效果:

先在层级管理器内,把界面搭建好,把做成预制资源,使用代码加载
编辑器里的效果:

加载弹窗:

弹窗处理:

代码:https://github.com/caizj-cn/CocosCreator/tree/master/PrefabDemo

太麻烦了

现在大家都这么干,把UI拖成预制,用的时候通过cc.load加载,不直接放到场景里面
这样做首包小了,还能控制内存占用

1赞

除了楼主讲到的外,还应该给预制文件上设置延迟加载,才能正真起到作用。不然预制中使用到的图片同样会被加载到内存。

2赞

:clap:get !!!

还有更好的方法么?

:2:

肯定还有更好的办法!
不过你觉得这样那里不好呢?

你有什么更好的办法吗?可以分享下吗?

充分利用异步加载(在你这个登陆场景就开始偷偷预加载游戏场景,不能放过任何load机会,不然你以为游戏打开先蹦出个公司logo,游戏名字的是干啥)
资源合理划分(比如你这个登陆场景的资源只会在登陆场景里用到,那就把这部分图单独放,把登陆场景设置为自动释放资源)
使用预制的情况:
大量重复使用(比如子弹,金币,在使用的地方用对象池提前先创建几个)
很少有机会使用的节点(比如一些不常用的弹窗,比如游戏说明,游戏设置,各种活动,首冲n倍,视游戏而定)
可能永远不会使用的(针对角色的专用素材,动画,收集类,卡牌类,解锁类,关卡类等)
备份?(万一场景突然崩溃了,场景里的节点全没了。。。)

1赞

想问下大神还有没有其他的异步加载方法

一直以为异步加载就只有
> 1、cc.load 加载预制体
> 2、延迟加载资源
> 3、preloadScene 预加载场景

html5的worker特性,具体参考laya的文档:
http://ldc.layabox.com/doc/?nav=zh-ts-3-1-1