You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Analytics-Unity:能否获取游戏单关卡的准确耗时?

可以通过Firebase Analytics获取游戏关卡的准确耗时

你已经用到的logEvents方法完全可以实现这个需求,核心是通过自定义事件+时间戳参数来追踪关卡耗时,具体操作步骤如下:

  • 记录进入关卡的时间:当玩家进入目标关卡时,获取当前系统时间戳(比如Android用System.currentTimeMillis(),iOS用Date().timeIntervalSince1970),将这个时间戳存在本地内存或持久化存储里(比如SharedPreferences、UserDefaults)。
  • 计算关卡耗时:当玩家完成关卡、主动退出或失败时,再次获取当前时间戳,用结束时间戳减去进入时间戳,得到实际耗时(可转换为秒或毫秒,根据需求调整)。
  • 上报自定义事件:调用logEvents上报自定义事件(比如命名为level_completed、level_exit),同时带上关键参数:
    • level_id:标识具体关卡(如"level_10")
    • level_duration:计算出的关卡耗时(如125,单位秒)
    • 可选参数level_result:记录关卡结果(如"success"、"failed"、"quit")

示例代码

Android(Kotlin)

// 进入关卡时记录时间
val enterLevelTime = System.currentTimeMillis()
// 可将enterLevelTime存入SharedPreferences或内存变量

// 关卡结束时计算耗时并上报
val exitLevelTime = System.currentTimeMillis()
val levelDuration = (exitLevelTime - enterLevelTime) / 1000 // 转换为秒
val params = bundleOf(
    "level_id" to "level_5",
    "level_duration" to levelDuration,
    "level_result" to "success"
)
FirebaseAnalytics.getInstance(context).logEvent("level_completed", params)

iOS(Swift)

// 进入关卡时记录时间
let enterLevelTime = Date().timeIntervalSince1970
// 可将enterLevelTime存入UserDefaults或内存变量

// 关卡结束时计算耗时并上报
let exitLevelTime = Date().timeIntervalSince1970
let levelDuration = exitLevelTime - enterLevelTime // 单位秒
Analytics.logEvent("level_completed", parameters: [
    "level_id": "level_5",
    "level_duration": levelDuration,
    "level_result": "success"
])

注意事项

  • 确保时间戳的一致性:统一使用UTC时间或系统本地时间,避免时区差异导致耗时计算错误。
  • 处理后台场景:如果玩家在关卡中切换到后台,建议暂停计时,否则后台停留时间会被计入关卡耗时。可以通过监听应用前后台状态,记录暂停/恢复时间来修正耗时。
  • 注册自定义参数:需要在Firebase控制台的「自定义定义」中注册level_id、level_duration等参数,这样才能在Analytics报表中查看对应的维度和指标。

内容的提问来源于stack exchange,提问作者Salf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:50:40