【问题标题】:Downloaded Json File, not Working after Building the Game下载的 Json 文件,构建游戏后不工作
【发布时间】:2020-07-27 12:02:56
【问题描述】:

美好的一天社区,

几周以来,我一直在开发一款愚蠢的饮酒游戏。一切都很好,花花公子。通过我所有的想法工作并完成了它。我为自己感到非常自豪。现在这是踢球者。游戏使用 Unity 中的 www 从我的 Nextcloud 下载 Json 文件。 Json 持有所有 Game_Cards。它在 Unity 中运行得非常好,但是在我构建游戏之后,它什么也没做。我很确定我在这里遗漏了一些东西。但我不知道如何调试它。坦率地说,我认为我对这个有工作盲区。我希望它是一个简单的修复。

我认为可能发生了什么:

  • 下载工作正常,但 Json 文件保存到错误或无法访问的路径
  • 根本无法下载。

卡片路径:

cardPath = Application.dataPath + "/Saves/cards.json";

下载方法

IEnumerator Cards()
    {
        UnityWebRequest www = new UnityWebRequest("https://my.link.wich/nobody/should/know");
        www.downloadHandler = new DownloadHandlerBuffer();
        yield return www.SendWebRequest();
        if (www.isNetworkError || www.isHttpError)
        {
            Debug.LogError(www.error);
        }
        else
        {
            string downloadedText = www.downloadHandler.text;
            File.WriteAllText(cardPath, downloadedText);
            ReadCards();
        }
    }

来自 Json 的阅读卡片

public void ReadCards()
    {
        string cardFile = File.ReadAllText(cardPath);
        cardDatabase = JsonUtility.FromJson<CardListObject>(cardFile);
    }

第一次使用 StackOverflow 并实际发布一些东西。对我好一点:D

更新

搞定了! 我必须先创建文件夹。

cardPath = Application.persistentDataPath + "/Saves/cards.json";
if (!System.IO.Directory.Exists(Application.persistentDataPath + "/Saves"))
{
    System.IO.Directory.CreateDirectory(Application.persistentDataPath + "/Saves");
}

【问题讨论】:

    标签: c# json unity3d save loading


    【解决方案1】:

    在构建中,您需要使用Application.persistentDataPath 而不是Application.dataPath

    UPD:我的错,你只是在下载时阅读。所以你可以忽略下一部分。

    你需要在你的ReadCards方法中做一些事情以防文件不存在,因为你可能会遇到下载错误并且文件不会被创建。

    例如:

    public void ReadCards()
        {
            if (!System.IO.File.Exists(cardPath) return;
    
            string cardFile = File.ReadAllText(cardPath);
            cardDatabase = JsonUtility.FromJson<CardListObject>(cardFile);
        }
    

    那么您的cardDatabase 将保留默认值,而您将没有FileNotFoundException

    【讨论】:

    • 我看到了 persistentDataPath 的东西,但它对我不起作用。是因为我在那里创建了另一个文件夹:"/Saves/cards.json";?感谢您提供有关下载错误的提示。
    • @EddieEdson 您需要先创建目录。请记住,此方法不会创建目录,如果它已经存在,因此您不需要额外检查System.IO.Directory.CreateDirectory(Application.persistentDataPath + "/Saves");将其写入文件之前。
    • 天哪,你是我的英雄。我正在查看我的 AppData 文件夹,只是在想同样的事情,正要问你。我试试看,让你知道!
    • 工作,唯一的事情是我必须切换回主菜单并重新启动游戏的“游戏”部分,以便它可以读取文件,但这非常小!非常感谢,我只是瞎了,看不到文件夹的东西。但我记得先创建文件夹,然后再写给他们。得到教训!再次,谢谢你!让我开心!
    猜你喜欢
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多