构建 Unity3D 项目后文本文件为空

Posted

技术标签:

【中文标题】构建 Unity3D 项目后文本文件为空【英文标题】:Text file empty after building Unity3D project 【发布时间】:2021-05-29 11:56:28 【问题描述】:

在运行时,我记录了我想在构建中播放的输入。所以我在 Resources 目录下创建了一个 txt 文件,我在整个运行时使用 StreamWriter 填充文本。关闭项目后,内容仍以场景模式保留在那里,但在构建和运行项目后不会。我已经在网上搜索了一段时间,但没有找到与我的问题相关的任何内容。我尝试使用 StreamingAssets 文件夹,但我也没有让它工作。感谢您的帮助。

    if (!Directory.Exists("Assets/Resources/Recordings"))
    
        Directory.CreateDirectory("Assets/Resources/Recordings");
    

    if (!File.Exists("Assets/Resources/Recordings/Challenge1.txt"))
    
        File.WriteAllText("Assets/Resources/Recordings/Challenge1.txt", "");
    

编辑:切换(模式)

     case Mode.Record:
        oldSequence.init ();
        currentSequence.init ();

        inputRecordStream = new StreamWriter (FilePath, false); // will overwrite new file Stream
        if (inputRecordStream.ToString () == "")
        
            Stop ();
            Debug.Log ("InputReplay: StreamWriter(" + FilePath + "), file not found ?");
            return false;
        
        else
        
            inputRecordStream.AutoFlush = true;
            SetInputStd ();
        
        break;

记录方法:

private void Record(float time)

    currentSequence.init ();
    currentSequence.t = time;

    // store only true boolean
    foreach (KeyCode vkey in System.Enum.GetValues(typeof(KeyCode)))
    
        if (Input.GetKey (vkey))
            currentSequence.gK.Add (vkey);
        if (Input.GetKeyDown (vkey))
            currentSequence.gKD.Add (vkey);
        if (Input.GetKeyUp (vkey))
            currentSequence.gKU.Add (vkey);
    

    currentSequence.mP = Input.mousePosition;

    currentSequence.mWP = Camera.main.ScreenToWorldPoint (currentSequence.mP);

    currentSequence.mSD = Input.mouseScrollDelta;

    foreach (string virtualAxis in AxisList)
        currentSequence.vA.Add (Input.GetAxis (virtualAxis));

    foreach (string ButtonName in ButtonList)
    
        if (Input.GetButton (ButtonName))
            currentSequence.vB.Add (ButtonName);
        if (Input.GetButtonDown (ButtonName))
            currentSequence.vBD.Add (ButtonName);
        if (Input.GetButtonUp (ButtonName))
            currentSequence.vBU.Add (ButtonName);
    

    // only write if something changed
    if (AnyChange(oldSequence, currentSequence))
    
        //Debug.Log (JsonUtility.ToJson (newSequence));
        inputRecordStream.WriteLine (JsonUtility.ToJson (currentSequence));
        oldSequence = currentSequence;
    

【问题讨论】:

你的challenge1.txt文件是空的,正常的,你在里面写""! 哦,好的。所以我没有设法将它们包含在构建中,我只是在其中创建了新文件。你知道我如何在构建中包含我在运行时创建的文本文件吗? @法国人 是的,但显示更多代码..如何构建文本 【参考方案1】:
File.WriteAllText("Assets/Resources/Recordings/Challenge1.txt", ""); 

使用File.WriteAllText(string path string text ) 时,请确保包含要写入文件的数据。您只包含了不会向文件写入任何字符的 ""。

要导入资产以在运行时使用,您可以使用Resources.Load(string path)。这将允许您在运行时访问统一脚本中的文件。

【讨论】:

以上是关于构建 Unity3D 项目后文本文件为空的主要内容,如果未能解决你的问题,请参考以下文章

当我在 xcode 中构建游戏时,所有 gui 纹理/文本看起来都不同(unity3d)

[Unity3D] 关于txt,xml,json文件的读写,及外部文件(夹)的创建

React Native 构建错误:文本不能为空或为空

构建 Android 项目时在 Unity3D 中合并清单文件问题

将文本文件合并到我的应用程序的构建中

PHP:检查动态添加的文件上传是不是为空