Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
应该是关于性能损耗方面的问题
Everness发起了问答2017-12-04
10
回复
363
浏览

请问下siki老师,我现在正在复制拼UI的工作,使用的是NGUI和Unity5.6.4,现在我有一个问题不明白需要您帮忙解答下。具体如下:

一般情况下如果重复的UI结构,比如好友列表里的单个好友项,我们都会通过自动创建的方式来进行复数个对象的生成工作,也就是先制作一个预设体,然后在通过代码动态加载创建复数个并且刷上不同的数据。

但是也可以通过直接把这些复数个的东西创建在页面的大预设体里面,使其在加载页面的时候就全部加载进来,不需要通过代码来控制创建。

请问下,以上两种方式有没有什么性能上的不同呢?

不知道我描述清楚了没有,我知道的是创建对象是花费性能的,所以一般列表这种对象都是通过协程之类的进行创建,避免在一帧内创建大量对象导致卡死。

但是我不太了解直接把复数个同样的对象放置在预设体内进行保存,然后通过创建这个预设体来达到一次性创建复数个对象,这样的结果是不是跟我用代码在一帧内创建复数个对象的性能损耗相同?

所有回复
  • siki 2017-12-04

    第二种方式性能比较快,因为是一次性创建出来的

     

    一次性创建肯定比创建小的多花点时间,但是 一次性创建肯定要比多次创建花费的总时间要节约很多的

    • Everness 2017-12-04

      体验上如何呢?如果预设体内对象过多肯定也会有卡顿感吧?我通过profiler看的话,通过预设体一次性创建确实是在一个短时间内有峰值,而代码循环创建的话是连续的小峰值。
      实际例子就是比如像王者荣耀那个等级成长页面,里面有从1级到30级这30个同样的对象,像这种是如何处理呢?至少我打开界面的时候没有感觉到他是分部创建的,但是感觉一帧内创建30个是不是又有点多?

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-12-05

    像你说的那个王者荣耀的例子是不适合用这个方法的,因为 任务只有一个等级,不需要频繁的等级切换,这个时候世界实例化指定的等级的prefab就可以了,而不是把1-30级的prefab都创建出来

     

    一次性创建出来肯定消耗性能,可以做一个类似正在加载的界面,让用户稍安勿躁

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-12-05

    像你说的那个王者荣耀的例子是不适合用这个方法的,因为人物只有一个等级,不需要频繁的等级切换,这个时候只需要实例化指定的等级的prefab就可以了,而不是把1-30级的prefab都创建出来

     

    一次性创建出来肯定消耗性能,可以做一个类似正在加载的界面,让用户稍安勿躁

    • Everness 2017-12-05

      我不太清楚您说的这个是哪个部分,我说的是主界面右下角那个按钮进去以后,有个成长历程的标签页,那里面有个等级滑动的功能,我说的就是这里,因为我觉得应该不太可能每次滑动都进行创建和删除的操作吧?因为可以随便滑动,如果每次都创建删除就太耗费性能了,他这个就是能够平滑的滑动显示从1级到30级的类似格子那种的对象。而且还自带了一个定位功能,可以将当前定位显示在当前玩家的等级。

      (0) 回复
    • Everness 2017-12-05

      他那个成长历程里面的等级任务和成长任务部分我知道是通过点击对应等级那个按钮以后才会进行数据刷新,但是上面那个滑动的效果是如何同时处理定位等级功能和循环显示30个对象功能的我就不明白与原理了

      (0) 回复
    • siki 2017-12-06

      回复 @ Everness: 成长历程的 等级链条可以一次性创建出来的

      (0) 回复
    • siki 2017-12-06

      定位功能, 你可以看看我讲解的ugui教程,里面有讲scrollview如何转到执行的位置

      (0) 回复
    • Everness 2017-12-06

      回复 @ siki: 请问您说的ugui课程是那个Unity5.1超强UI案例学习那个吗?

      (0) 回复
    • siki 2017-12-07

      回复 @ Everness: 恩恩是的哈,里面有一个滑动切换的案例

      (0) 回复
    还有1条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!