C# 已下载Json文件,在构建游戏后无法工作

C# 已下载Json文件,在构建游戏后无法工作,c#,json,unity3d,save,loading,C#,Json,Unity3d,Save,Loading,好日子社区, 几个星期以来,我一直在做一个愚蠢的饮酒游戏。一切都很好。我用自己的方式完成了我所有的想法。我为自己感到骄傲。现在是踢球者。游戏使用Unity中的www从我的Nextcloud下载一个Json文件。Json保存所有游戏卡。它在Unity中运行得非常好,但是在我构建了游戏之后,它什么也没做。我很确定我错过了什么。但我不知道如何调试它。坦率地说,我想我在这件事上是盲目的。我希望这是一个简单的解决办法 我认为可能发生的事情: cardPath = Application.dataPath

好日子社区,

几个星期以来,我一直在做一个愚蠢的饮酒游戏。一切都很好。我用自己的方式完成了我所有的想法。我为自己感到骄傲。现在是踢球者。游戏使用Unity中的www从我的Nextcloud下载一个Json文件。Json保存所有游戏卡。它在Unity中运行得非常好,但是在我构建了游戏之后,它什么也没做。我很确定我错过了什么。但我不知道如何调试它。坦率地说,我想我在这件事上是盲目的。我希望这是一个简单的解决办法

我认为可能发生的事情:

cardPath = Application.dataPath + "/Saves/cards.json";
  • 下载工作正常,但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);
    }

在构建中,您需要使用
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);
    }
公共作废读卡()
{
如果(!System.IO.File.Exists)(cardPath)返回;
string cardFile=File.ReadAllText(cardPath);
cardDatabase=JsonUtility.FromJson(cardFile);
}

然后,您的
cardDatabase
将保留默认值,您将不会有
FileNotFoundException

我看到了persistentDataPath,但它对我不起作用。这是因为我在其中创建了另一个文件夹:
“/Saves/cards.json”;
?感谢提供有关下载错误的提示。@Eddiedson您需要先创建目录。请记住,如果目录已经存在,则此方法不会创建目录,因此您不需要额外检查
System.IO.directory.CreateDirectory(Application.persistentDataPath+“/Saves”)
在写入文件之前先把它放好。哦,天哪,你是我的英雄。我在看我的AppData文件夹,也有同样的想法,正要问你。我尝试了一下,让你知道!成功了,唯一的事情就是我必须切换回主菜单并重新启动“游戏”游戏的一部分,所以它可以读取文件,但这是非常小的!非常感谢你,我只是瞎了眼,看不到文件夹的东西。但我记得先创建文件夹,然后再向它们发送。经验教训!再次感谢你!让我开心!