当前位置: 首页 > article >正文

Unity性能优化1【基础篇】

前言

首先想指出本文表达的内容包括但不限于Unity引擎,属于各引擎方案通用理念。

一.经过性能优化的游戏带来的好处

经过性能优化的游戏会运行流畅,占用较小内存,包体大小降低,耗电量和发热量降低,较低的闪退率等优点;

反之,性能相对较差的游戏最致命的问题之一就是卡死,闪退等问题;

试想一下PVP战斗中在胜负未分情况下出现卡死,必须重启游戏导致对局战败,这种体验感是非常差的,会使玩家质疑这个游戏玩下去和付费的必要性,另玩家流失。

二.性能优化学习思路

性能优化和很多其他能力一样,大成之前,无需发明创造,把各种经验总结记住即可;重要的就是知其然,并知其所以然,在实际做项目时可以让我们做出最优的决策。

三.幕后的事情

要理解为什么我们的代码可能表现不佳,我们首先需要了解 Unity 构建游戏时会发生什么。了解幕后发生的事情将有助于我们就如何提高游戏性能做出明智的决定。

四.编译

当我们构建游戏时,Unity 将运行游戏所需的所有内容打包到可由目标设备执行的程序中。 CPU 只能运行用非常简单的语言(称为机器代码或本机代码)编写的代码;它们无法运行用 C# 等更复杂的语言编写的代码。这意味着Unity必须将我们的代码翻译成其他语言。这个翻译过程称为编译。

Unity 首先将我们的脚本编译成一种称为通用中间语言 (CIL) 的语言。 CIL 是一种很容易编译成多种不同本机代码语言的语言。然后,CIL 被编译为我们特定目标设备的本机代码。

五.理解为什么某些代码比其他代码执行得更好

尚未编译的代码称为源代码。我们编写的源代码决定了编译后的代码的结构和内容。

在大多数情况下,结构良好且高效的源代码将产生结构良好且高效的编译代码。

首先,某些 CPU 指令比其他指令需要更多的时间来执行。一个例子是计算平方根。与两个数字相乘等计算相比,该计算需要 CPU 更多的时间来执行。单个快速 CPU 指令和单个慢速 CPU 指令之间的差异确实非常小,但从根本上来说,了解某些指令比其他指令更快是有用的。

接下来我们需要了解的是,一些在源代码中看起来非常简单的操作在编译为机器代码时可能会非常复杂。一个例子是将元素插入到列表中。执行此操作需要更多的指令,例如通过索引访问数组中的元素。同样,当我们考虑单个示例时,我们讨论的是一小部分时间,但重要的是要理解某些操作会比其他操作产生更多的指令。

结论一:达成相同目标的简单语句存在执行快慢之分

结论二:达成相同目标的数据结构存在执行快慢之分

对有经验的程序员来说,这两个结论是比较基础的知识;但是这里提出来的重点是将其与性能优化结合到一起来加深记忆,建立逻辑,作为两个例子解释为什么这么做而不那么做。

六.区分我们的脚本代码和Unity引擎代码

区分 C# 编写的脚本与构成 Unity 引擎的代码对我们很有用。 Unity 引擎的大部分核心功能都是用 C++ 编写的,并且已经编译为本机代码。这个编译后的引擎代码是我们安装 Unity 时安装的一部分。


http://www.kler.cn/news/361359.html

相关文章:

  • 告别微信封号!学会这5招,让你的账号坚不可摧
  • WebGl 实现图片平移、缩放和旋转
  • k8s中如何将pod的标准输出日志输出到一个文件
  • c++日常积累
  • 导数的概念及在模型算法中的应用
  • Qt信号和槽记录
  • js的入口函数,及入口函数的作用
  • Spring中的参数统一配置
  • Microsoft Visual Studio Install Projects2022发布安装包
  • Java实现html填充导出pdf
  • Python 从网页中提取文本内容,进行中文分词和词频统计,并生成词云图进行可视化
  • 计算机网络教学设计稿
  • 自定义中文排序在Java中的实现与注意事项
  • redis的bitmap实现用户签到天数统计
  • 吃透高并发模型与RPC框架,拿下大厂offer!!!
  • VuePress的基本常识
  • HTML基本语法
  • 【电子元件】光通量和色温 (欧司朗LED灯珠 KW3 CGLNM1.TG命名规则)
  • 本币接口服务
  • 对比学习论文随笔 1:正负样本对(Contrastive Learning 基础论文篇)
  • Maven--架构项目管理工具
  • 基于知识图谱的美食推荐系统
  • 《普通逻辑》学习记录——引论
  • 【880线代】线性代数一刷错题整理
  • 裸指针的六个问题
  • 如何提高 YoloDotNet 图像目标检测的准确率?