• 记 一次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毫无必要地锁住大量的内存,是一件非常浪费的事情
  • 相关阅读:
    TP5.0防跳墙访问
    TP5.0上传添加数据库
    抽象类与接口
    instanceof 关键字
    abstract 抽象类
    extends 继承
    单例模式
    类的加载过程和对象的创建
    静态成员变量和非静态成员变量的区别
    this关键字
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/14276773.html
Copyright © 2020-2023  润新知