问一个ui加载性能优化的问题

:slightly_smiling:顶一下 希望大家一起来探讨 也希望官房的大佬们能给点建设性意见

这个没什么好说的,不管用什么,资源大了肯定就会卡,只有异步预加载。

你应该没看我详细描述吧

读取资源是会导致卡顿,所以我们没法在底层去优化的话,就尽量在开发层面去优化。我们现在现在使用的方式有

  1. 细分每个prefab的粒度,尽量不让每个加载prefab的大小大于100k,有些不必要的资源可以初始化的时候动态加载,但是这会导致项目难维护
  2. 加载资源和播放动画尽量不一起运行。一般的弹框打开会有打开动画,也会这个时候初始化界面,如果初始化界面会创建很多item,也会导致打开动画卡顿严重,所以我们是弹框打开动画播放完后再进行初始化界面的操作
    3.禁止使用系统字体和富文本,这个两个东西会导致严重卡顿,尽量使用bmfont字体
    4.列表类弹框有scrollview和很多item的就使用动态复用列表,这样不会因为显示数量太多导致需要创建过多的item,动态复用列表在论坛和github里都有很多,一搜就可以找到

如果还有其他方法的话可以互相沟通哈哈~

1赞

现在用的哪个版本的呢

这个问题真的非常影响体验,希望官方能早日优化一下。另外1.x-1.10.1基本上能做到秒开,从2.x开始就卡顿的厉害。

mark
很常见的问题

就算是拆分后打开界面后异步加载,如果此时又有滚动列表,还是会感觉到卡顿的。

就没人关注这个基本问题么

天天吹嘘性能多好

@jare

官方嗯? 关注哈呗

顶顶, 基本需求啊

老帖子居然被挖出来了
以前做的一片偏重度手游的时候也遇到了此类问题,用的是1.9.3。使用的策略跟上面的差不多,基本就是拆分prefab异步加载,减少实例化prefab的大小,同时增加prefab缓存队列,对于游戏内的热点prefab做缓存,prefab里面的资源做分帧加载,如果弹窗用的是animation动画,尽量改成程序代码实现。如果缓存过多,还需要加一套内存释放机制。
差不多这样就基本解决了特别卡的问题,但是还是会有小的卡顿,没办法做到秒开。当时我们主程的说法是creator 性能天然比2dx差。

原生android确实卡,果断放弃了原生,直接用原生webview。

分享一个我们遇到的引起卡顿的点,仅作参考。

有一个界面会显示很多技能图标,技能图标合成为一张张的plist。这些plist算起来有几百个图片帧。在第一次加载这些plist的时候会非常的慢。原因是每个图片帧都有一个独立的json文件,显示界面的时候需要加载上百个json文件,所以很卡。

因为这些图标都是用代码动态显示的,所以我作了一个优化:把碎图合成一张大图之后,不用plist文件,而是用脚本生成一个json文件,里面描述了每一张碎图的位图,像这样子:

{
    "mh_fsxl5": [4,0,726,662,64,72,0,0,80,80],
    ...
}

然后用代码动态生成SpriteFrame显示出来。没优化之前打开界面需要2秒左右,优化完打开只有300毫秒左右。

这个方法只适用于动态加载的图集,对于需要在编辑器里设计的图片,试试在打包的时候对Bundle选择合成一个JSON,这样就不会有很多碎的json,文件IO大大减少,也许会有效果。

9赞

看过大神之前animation的优化,确实牛逼,我都想投奔了

mark mark

遇到同样的问题,3.2.0版本,各位大神有解决方案了没

官方的短期目标都在web上了。

原生我看还是coocs-lua性能最好,最稳

关注一下。

关注一下,怎么也做不到顺滑,体验很不好!希望哪位大神能够有更好的方案