如何修改Unity C#代码实现每次运行生成新TXT文件并创建专用存储文件夹
Unity C#脚本修改方案
实现逻辑说明
- 专属存储目录:创建独立的
GeneratedJobFiles文件夹存放所有输出TXT,不会直接散放在Assets根目录,脚本自动检测创建文件夹,无需手动提前新建 - 全新文件生成:文件名采用精确到秒的时间戳命名,每次调用生成方法都会生成独立的新文件,不会覆盖历史文件,无重名冲突
修改后完整代码
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using System; // 修正原代码的错误引用:Unity.UI改为UnityEngine.UI using UnityEngine.UI; public class Hippocampus : MonoBehaviour { QuoteText qT; void OnEnable () { qT = FindObjectOfType<QuoteText>(); } public void CreateText() { // 定义专属存储目录路径,此处放在Assets同级的GeneratedJobFiles文件夹 // 如果要放在Assets内部的子目录,改为Path.Combine(Application.dataPath, "GeneratedJobFiles")即可 string directoryPath = Path.Combine(Application.dataPath, "../GeneratedJobFiles"); // 自动创建目录,目录已存在时调用也不会报错 Directory.CreateDirectory(directoryPath); // 生成带时间戳的唯一文件名,精确到秒不会重复 string fileName = $"Job_{DateTime.Now:yyyyMMddHHmmss}.txt"; // 拼接完整文件路径,用Path.Combine保证跨平台兼容 string fullPath = Path.Combine(directoryPath, fileName); // 拼接完整内容,原代码的重复读写逻辑合并,提升效率 string content = $"{qT.area}m² \n\n" + $"${qT.sqreMeterRate * qT.area}\n" + $"{qT.tileMod}\n" + $"{qT.ironMod}\n" + $"{qT.roofFall}\n" + $"{qT.snowMod}\n" + $"{qT.skyLightMod}\n" + $"{qT.hotWaterMod}\n" + $"{qT.boxGutterMod}\n" + $"{qT.ceilingMod}\n" + $"{qT.overSizedMod}\n" + $"{qT.floorLevel}\n" + $"{qT.rakingMod}\n" + $"{qT.solidRaftersMod}\n" + $"{qT.aCMod}\n" + $"{qT.ductingMod}\n" + $"{qT.commercialMod}\n"; // 直接写入新文件,无需追加逻辑 File.WriteAllText(fullPath, content); } }
可选补充说明
如果需要打包发布后也能正常写入文件,建议将目录路径替换为:string directoryPath = Path.Combine(Application.persistentDataPath, "GeneratedJobFiles");Application.persistentDataPath为Unity全平台通用的可读写路径,不会有权限问题。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

