「Unity」时间记录小工具

本文介绍了一个Unity中的时间记录工具,用于记录代码行为的运行时间。该工具支持简单、嵌套和递归记录,能帮助开发者直观了解代码各部分的时间消耗,而不会破坏代码结构。通过编辑器扩展,无需额外查看日志或调试,方便在Inspector窗口直接查看记录结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  • 原创文章,转载请标明出处,谢谢!

这是什么

这是一个在Unity中,用以记录某个代码行为运行时间的小工具。效果如下图所示,它们分别展示了:

  • 一次任务的记录
  • 嵌套任务的记录(记录中嵌套记录)
  • 递归任务的记录(套娃)
    一次任务的记录 在这里插入图片描述 在这里插入图片描述

为什么要用它

笔者的毕业设计中要时刻关注一些代码行为的时间消耗。如果使用C#的Stopwatch类,会严重破坏代码结构,并且当如果需要记录一个行为中若干子行为各自时间时(例如函数A包含函数AA、AB,我想要记录这三个函数的时间,并直观得到各部分占A的比例),很难通过Stopwatch达到目的。

因此笔者封装了一个用以记录时间消耗的工具,它具有以下特点:

  • 简单、安全的使用方式,几乎不破坏代码结构,更不会影响执行结果
  • 嵌套记录时,很容易看到一个父行为中各个子行为的时间消耗
  • 通过编辑器扩展,无需通过调试、Log输出等方式查看结果

其他

  • 因为源码中有一定的注释且代码量少,因此代码讲解部分比较简陋。如果你需要详细的的讲解,请使用私信或者评论的方式告诉我,我会进行补全!

使用方法

我要从哪里获取代码

代码和使用示例已经放在了github上,github地址:
UnknownArkish/UnityTimeRecorder

放在你的工程中:

  1. 将 Assets/Scripts/TimeRecorder.cs文件放在你的工程目录中放置脚本文件夹的下;
  2. 将Assets/Editor/TimeRecorderEditor.cs文件放置在你的工程目录的Assets/Editor文件夹下(或Editor中的文件夹,总之目录路径要在Editor中)
  3. 场景中创建一个物体,挂上 TimeRecorder.cs 脚本

使用示例

TimerRecorder中只有一个关于记录时间的函数 Record,其函数原型如下:

public void Record(
	string actionName, 
	Action action, 
	RecordUnit unit = RecordUnit.Millisecond
)
  • string actionName: 行为的名字;
  • Action action: 行为,需要传入一个无参无返回值的函数,也可传入一个 无参无返回值的 lambda表达式;
  • RecordUnit unitOption: 可选参数,行为记录的时间单位。

注意:由于TimeRecorder采用单例模式,因此你需要通过 TimeRecorder.Instance 获取单例实例。

简单记录

大多数情况下,你只需要将需要记录的行为打包成一个lambda表达式作为参数传入即可。如下所示将会记录任务A的执行时间:

TimeRecorder.Instance.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值