我是靠谱客的博主 甜美煎蛋,最近开发中收集的这篇文章主要介绍Unity3D简要性能优化方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一:什么是性能优化?
常见的优化类型包括:性能优化(重点),流程优化,体验优化。
性能优化的目标:(1)游戏流畅运行,(多种帧数标准,避免卡顿)
常见的帧数标准:60帧(终极目标),30帧(移动端要求),24帧。
(2)游戏符合市场需要。(硬件的兼容性 ,安装包的大小。)

二:优化常见的误区:
误区一:我的游戏很简单,不需要优化。
正解简单:玩法简单,架构简单。与优化无关哦!
误区二:优化工作尽早进行。
正解:由于项目是团队开发的,优化过早的话造成代码改动的地方会有很多地方呢!过早优化还会浪费时间和精力,而且意义不大。
误区三:性能优化=Degbug
正解:它们直接毫无关系。
三:游戏优化的两大原则:
(1)不过早做优化。
(2)用户不察觉原则。
a.玩家不一定能发现欠优化的地方。
b.玩家不一定能发现优化后欠佳的地方。

四:优化的组成部分:
脚本,
图形与物理,
文件。

脚本:1.常见的性能黑点(不够好的地方)。
2.如何找到需要优化的代码。
图形与物理:
1.美术资源
2.物理效果
文件:
1.安装包的优化
2.资源包的优化
3.工作流程的优化
所有游戏都要优化吗?
三个事实:
1.性能完美是我们追求的目标。
2.不同类型的游戏对优化的侧重点不一样。
3.优化工作占生命周期非常大的一部分

五: Profile(分析器)与时间
这里写图片描述
Profiler:用来评估性能的工具。
这里写图片描述

运行之后的工作状态哦!
这里写图片描述
CPU资源使用情况。
这里写图片描述
显卡资源的使用情况。
这里写图片描述
内存资源。
这里写图片描述
音频资源。
这里写图片描述
视频资源。
这里写图片描述
物理碰撞资源。
这里写图片描述
网络通信情况。
六:使用profiler

七:常规循环与变量调用

这里写图片描述

void FixedUpdate()
{
}
void Update()
{
}
void LateUpdate()
{
}

变量的隐性调用。

这三个是常规的循环:优化工作中看看是否常规循环中是否有不不要的东西。
八:场景搜索与协程
GameObject.Find()方法的使用。
当频繁的使用一个物体是,可以将其存储起来,方便多次使用哦!
九:合理降低数学精度
1.计算距离 Vector3.magnitude 长度 返回向量的长度(只读)使用但是使用sqrMagnitude(计算平方很快)来更优化呢!
这里写图片描述
举例说明:

这里写图片描述
点积>0表示向量同向。

float distance1 = (player1.position - transform.position).magnitude;
float distance2 = (player2.position - transform.position).magnitude;
print(distance1);
print(distance2);
print(distance1 < distance2);
float distance11 = (player1.position - transform.position).sqrMagnitude;
float distance22 = (player2.position - transform.position).sqrMagnitude;
print(distance11);
print(distance22);
print(distance11 < distance22);

float angle = Vector3.Angle(player2.forward, player1.forward);
float dot = Vector3.Dot(player2.forward, player1.forward);
print(dot);
print(angle);

十:对象池 优化技术(以后会更新的,下次讲啦!)

最后

以上就是甜美煎蛋为你收集整理的Unity3D简要性能优化方案的全部内容,希望文章能够帮你解决Unity3D简要性能优化方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(89)

评论列表共有 0 条评论

立即
投稿
返回
顶部