Unity中如何统计游戏启动至物体变色的时长并导出至TXT文件?
解决方案:停止计时并将时长导出至TXT文件
我帮你修正并完善了脚本,解决停止计时和导出TXT的问题,具体如下:
先修正原脚本的基础错误
你的初始计时器脚本有两个关键问题:
Time.Time应该替换为Time.deltaTime——后者才是Unity中用来累加帧间隔时间的正确属性,能保证计时准确print(second)里的second未定义,应该改为print(timer)
完整实现代码
using UnityEngine; using System.IO; public class TimerTracker : MonoBehaviour { public float timer = 0.0f; // 控制计时状态的开关 private bool isTiming = true; void Start() { timer = 0; isTiming = true; } void Update() { // 仅在计时状态开启时累加时间 if (isTiming) { timer += Time.deltaTime; // 可选:实时打印当前时长(不需要可以注释掉) Debug.Log($"当前计时:{timer:F2}秒"); } } // 眼动追踪触发的停止计时函数 void CountStop() { // 停止计时 isTiming = false; // 格式化时长为两位小数,提升可读性 string timeContent = $"从游戏启动到物体变色的时长:{timer:F2}秒"; // 选择跨平台兼容的保存路径:persistentDataPath是Unity提供的可写持久化目录 string savePath = Path.Combine(Application.persistentDataPath, "tracking_record.txt"); // 写入TXT文件:文件不存在会自动创建,存在则覆盖原有内容 File.WriteAllText(savePath, timeContent); Debug.Log($"时长已保存至:{savePath}"); } }
关键逻辑说明
- 计时启停控制:通过
isTiming布尔变量开关计时逻辑,调用CountStop时将其设为false,计时器就会停止累加 - TXT导出:使用
System.IO.File.WriteAllText方法完成文件写入,搭配Application.persistentDataPath确保在Windows、Android、iOS等平台都能正常写入,避免权限报错 - 格式优化:用
{timer:F2}将时长格式化为两位小数,让导出的结果更清晰易读
内容的提问来源于stack exchange,提问作者Francesco
相关产品推荐
相关产品推荐

