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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:27:15