zoukankan      html  css  js  c++  java
  • 记 一次U3D大型多人在线网游性能优化经验

      就是类似这种网游

     -香港明星代言图片

      这种老2D网游(十几年前PC端的游戏)现在要把它搬到手机上,因为是纯2D的游戏,采用了大量的图片(动画序列帧),并没有用到

    3D的技术,市面上有不少是用Cocos2D引擎开发的,基本上还原一致。

      博主所在的项目采用U3D开发,去年Unity版本2019 LTS刚刚发布,开发2D方面完全没有问题。这里略过一些游戏功能开发过程,只说开发了
    大半年后游戏基本做出来了,功能完成度70%,然后整体测试了 一下,发现游戏卡顿、掉帧问题明显,于是开始了为期三周的性能优化。

      性能优化,博主首先想到的是看SetPass Calls数量,也就是Draw Call (DC) 的数量, 进入游戏后,发现DC超过了300,游戏很卡

    -游戏图片

    什么是Draw Call#
    在Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。
    
    这一过程是逐个物体进行的,对于每个物体,不止GPU的渲染,引擎重新设置材质/Shader也是一项非常耗时的操作。
    
    因此每帧的Draw Call次数是一项非常重要的性能指标,对于iOS来说应尽量控制在20次以内,这个值可以在编辑器的Statistic窗口看到。
    

     然后又看了下内存,进游戏后MONO从300MB一直涨到了1.7G,也是很夸张

    目前Unity所使用的Mono版本存在一个很严重的问题,即:Mono的堆内存一旦分配,就不会返还给系统。
    因为对于游戏(特别是移动游戏)来说,内存的占用可谓是寸土寸金的,让Mono毫无必要地锁住大量的内存,是一件非常浪费的事情
  • 相关阅读:
    C#设计模式——抽象工厂模式(原文转自:http://blog.jobbole.com/78059/)
    WebConfig配置文件详解(转载自逆心的博客)
    ASP.NET C# 日期 时间 年 月 日 时 分 秒 格式及转换(转自happymagic的专栏)
    ASP.NET RepeatLayout 属性
    牛顿迭代法
    汉诺塔(整理)
    游戏引擎---好牛(转)
    字符串相关面试题(整理)
    有关java调用批处理文件
    有关java 8
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/14276773.html
Copyright © 2011-2022 走看看