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
相关产品推荐
相关产品推荐

