u3d性能优化

原文地址:http://blog.csdn.net/molti/article/details/8520418

性能优化需要从多方面入手,大家在项目中遇到的问题还是很普遍的,欢迎大家补充。

图形方面:
1. AlphaBlen优于AlphaTest。乍一看,以为是说错了,之前在为性能优化寻找突破点的时候,以为的在u3d的官方文档中看到,说是移动设备为AlphaBlen做了非常多的优化,而使用AlphaTest返回会降低性能,和传统的端游图形有很大不同哦。

内存/显存的占用:
1. 尽力少单场景复杂度。RPG游戏做好场景切割,无论是页游的数据分布加载还是移动设备的小内存限制,都需要做这件事。

游戏逻辑方面:
1. 在Behavior的Update()中:
a. 只做必要的逻辑 
b.如果一定要频繁检查,可以每隔几帧做一次调用: void Update(){ if( 0 == Time.frameCount%5) DoYourLogic(); }

2. 定时器
InvokeRepeating("Method name", 0.5, 1.0);

3. 离散的回收垃圾。
void Update() { if(Time.frameCount % 30 == 0) { System.GC.Collect(); } }
稳定的帧速优于大部分很快,偶尔卡一下:
如果我们不离散的做垃圾回收的工作,就会在一些时间点由系统集中的做垃圾回收的操作,当数量很大是,比如话费了30毫秒,那我们的游戏画面就会明显的卡一下。

4. 运行时尽量减少 Tris 和 Draw Calls.
看到大家说要尽力做到:Tris 保持在 7.5k 以下,Draw Calls 保持在 20 以下。
如果场景复杂度很高,比如农场类的游戏,会有特别庞大的建筑和动物类型,因为贴图数量激增,材质数量无法避免的增加,DrawCall会很高,那就尽量避免可同时看到的对象数量吧,摄像机尽量拉近。

5. Mesh Compression

6. 避免大量使用 Unity 自带的 Sphere 等内建 Mesh
U3d中的Mesh三角形数量太多,比如一个矩形的片,用了100个顶点。 建议自行制作简单的mesh来使用,比如用4个顶点做矩形,如果是用mesh做物理拾取,可以用八边形(或者是六边形只要你喜欢)代替圆形。

7. 避免在每帧更新时调用GetComponent
在Awake()中,获得组件并存在成员变量中,以便随时取用. 比如UIButton,Translate等。

8. 减少固定增量时间
将固定增量时间值设定在0.04-0.067区间(即,每秒15-25帧)。您可以通过Edit->Project Settings->Time来改变这个值。
这样做降低了FixedUpdate函数被调用的频率以及物理引擎执行碰撞检测与刚体更新的频率。
如果您使用了较低的固定增量时间,并且在主角身上使用了刚体部件,那么您可以启用插值办法来平滑刚体组件。

9. 避免不必要的分配内存。
为较少垃圾回收的开销,我们要尽可能的减少不必要的内存分配。
使用对象池:比如飞机发射的子弹,建筑上的收取金币的图标,当我们不再使用它时,将它放入对象池并把它移到一个很远的地方,看不到就好。

u3d性能优化

时间: 2024-10-07 08:21:57

u3d性能优化的相关文章

U3D 性能优化

官方优化文档--优化图像性能 http://docs.unity3d.com/Documentation/Manual/OptimizingGraphicsPerformance.html Unity3D性能优化专题 性能优化是一个异常繁琐而又涉及到项目开发的方方面面的一个过程,它的本质是在运行时的一个时间里尽可能完美展现丰富的内容. 实现优化可以通过优化资源.渲染.粒子.物理等模式: 也可以通过修改模型大小.减少纹理尺寸并结合Unity3D的一些相关特性来提升游戏的性能. 随着移动端的设备硬件

U3D开发性能优化笔记(待增加版本)

U3D开发性能优化笔记: .NGUI: Atlas优化; .poolmanager使用; .控制同屏drawcall次数; .SHADER优化顶点和运算; .合批与动态剔除; .逻辑部分优化;(如看到不到的物件不要做公告板位置运算,不要播放animation) .物理帧UPDATE降低; .关闭垂直同步,降低图片采样,声音预加载 方案 等等 ..; .模型骨骼不要超过32根; .贴图不要太大,建议512 *512 以下; .少用 CUTOFF和 aplha混合; .3D游戏效率基本原则就是费内存

U3D内存优化

原创文章如需转载请注明:转载自风宇冲Unity3D教程学院  U3D内存优化 读了Hog关于内存管理文章, 自己测试了下. 有以下收获: (1)Unity的Profiler性能监测是非常准确. (2)测试复盘的 结果也完全与Hog的一致 (3)但是场景里已经放的物体,删除后,GameObject,Transform等复制出来的是被删掉了.但是引用的贴图却没有被删除.使用Resources.UnloadUnusedAssets并没有效果. 或者实时创建的,依然没有被释放. 最后用了Resource

iOS开发——项目实战总结&UITableView性能优化与卡顿问题

UITableView性能优化与卡顿问题 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell.如果重用cell,为cell创建一个ID 每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到一个自定义类,初始化时就布局好

Java性能优化之JVM GC(垃圾回收机制)

Java的性能优化,整理出一篇文章,供以后温故知新. JVM GC(垃圾回收机制) 在学习Java GC 之前,我们需要记住一个单词:stop-the-world .它会在任何一种GC算法中发生.stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行.当stop-the-world 发生时,除GC所需的线程外,所有的线程都进入等待状态,直到GC任务完成.GC优化很多时候就是减少stop-the-world 的发生. JVM GC回收哪个区域内的垃圾? 需要注意的是,JV

Spark性能优化指南——高级篇

Spark性能优化指南--高级篇 [TOC] 前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题. 数据倾斜调优 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能. 数据倾斜发生时的现象 绝大多数tas

Mysql数据库性能优化(一)

参考 http://www.jb51.net/article/82254.htm 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库. mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面

Android应用程序性能优化Tips

主要介绍一些小细节的优化技巧,虽然这些小技巧不能较大幅度的提升应用性能,但是恰当的运用这些小技巧并发生累积效应的时候,对于整个App的性能提升还是有不小作用的.通常来说,选择合适的算法与数据结构会是你首要考虑的因素,在这篇文章中不会涉及这方面的知识点.你应该使用这篇文章中的小技巧作为平时写代码的习惯,这样能够提升代码的效率. 通常来说,高效的代码需要满足下面两个原则: 不要做冗余的工作 尽量避免执行过多的内存分配操作 To ensure your app performs well across

使用Html5+C#+微信 开发移动端游戏详细教程:(六)游戏界面布局与性能优化

本篇教程我们主要讲解在游戏界面上的布局一般遵循哪些原则和一些性能优化的通用方法. 接着教程(五),我们通过Loading类一次性加载了全部图像素材,现在要把我们所用到的素材变成图片对象显示在界面上,由上而下,首先是top层,top里面包涵了玩家(微信)头像,关卡信息,怪物血条信息,玩家金币,玩家宝石,玩家总攻击力. 定义函数 setTop 来初始化top层: function setTop() { TopDiv = new LSprite();//定义top层 var Topshape = ne