Unity Update优化
来源:互联网 发布:网络自媒体 编辑:程序博客网 时间:2024/06/03 20:15
测试一下MonoBehaviour自己的Update函数调用消耗
创建20000个物体,每个物体上挂载一个带有MonoBehaviour自己的Update,脚本如下:
public class TestUpdate1 : MonoBehaviour{ private void Update() { float a = 1.513f + 1.5141f; float b = 1.513f + 1.5141f; float c = 1.513f + 1.5141f; float d = a * b / c; }}
看看每帧耗时:
每帧大约耗时5毫秒
再来试试把所有的Update集中调用
创建20000个物体,每个物体上挂载一个集中调用的Update,脚本如下:
public class TestUpdate : ComponentBase, IUpdate{ public void OnUpdate() { float a = 1.513f + 1.5141f; float b = 1.513f + 1.5141f; float c = 1.513f + 1.5141f; float d = a * b / c; }}
然后使用一个UpdateManager统一调用,代码如下:
public class UpdateManager : SingletonBehaviour<UpdateManager>{ private List<IUpdate> _updateList = new List<IUpdate>(); /// <summary> /// 添加更新 /// </summary> /// <param name="call"></param> public void Add(IUpdate call) { if (!_updateList.Contains(call)) _updateList.Add(call); } /// <summary> /// 移除更新 /// </summary> /// <param name="call"></param> public void Remove(IUpdate call) { if (_updateList.Contains(call)) _updateList.Remove(call); } private void Update() { for (int i = 0; i < _updateList.Count; ++i) _updateList[i].OnUpdate(); }}
再来看看每帧耗时:
每帧耗时不到1毫秒
说明集中调用确实会比使用MonoBehaviour自己的Update更有效率,同样Awake,Start这些生命周期函数也是一样的,但是这些函数只执行一次,一般可以不用优化.
经过测试,这个耗时差和场景对象数量成正比,数量越多,耗时差就越大.
非常的简单.
0 0
- Unity Update优化
- 【Unity】Update()和FixedUpdate()
- Unity Update 详解
- Unity中的Update函数
- unity中的几个Update
- Unity 优化
- Unity 优化
- Unity优化
- unity优化
- Unity 优化
- unity 优化
- Unity优化
- unity优化
- Unity 优化
- unity优化
- unity优化
- unity 优化
- unity优化
- 第2章 编程问题 2.2节 3
- 数据库连接池
- python实现读Excel写入.txt
- 搭建python IDE
- visual studio 2017 xamarin 的性能小疑问
- Unity Update优化
- Qt:通过QML Profiler分析程序性能问题
- Android:内存泄露的发现
- WEB前端:浏览器(IE+Chrome+Firefox)常见兼容问题处理--01
- Qt入门(4)——控件
- java类加载机制
- 微信公众号发送红包
- java 流常用操作
- Win7+Ubuntu双系统安装完成后时间不一致相差大概8小时