C# 已下载Json文件,在构建游戏后无法工作
好日子社区, 几个星期以来,我一直在做一个愚蠢的饮酒游戏。一切都很好。我用自己的方式完成了我所有的想法。我为自己感到骄傲。现在是踢球者。游戏使用Unity中的www从我的Nextcloud下载一个Json文件。Json保存所有游戏卡。它在Unity中运行得非常好,但是在我构建了游戏之后,它什么也没做。我很确定我错过了什么。但我不知道如何调试它。坦率地说,我想我在这件事上是盲目的。我希望这是一个简单的解决办法 我认为可能发生的事情:C# 已下载Json文件,在构建游戏后无法工作,c#,json,unity3d,save,loading,C#,Json,Unity3d,Save,Loading,好日子社区, 几个星期以来,我一直在做一个愚蠢的饮酒游戏。一切都很好。我用自己的方式完成了我所有的想法。我为自己感到骄傲。现在是踢球者。游戏使用Unity中的www从我的Nextcloud下载一个Json文件。Json保存所有游戏卡。它在Unity中运行得非常好,但是在我构建了游戏之后,它什么也没做。我很确定我错过了什么。但我不知道如何调试它。坦率地说,我想我在这件事上是盲目的。我希望这是一个简单的解决办法 我认为可能发生的事情: cardPath = Application.dataPath
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文件夹,也有同样的想法,正要问你。我尝试了一下,让你知道!成功了,唯一的事情就是我必须切换回主菜单并重新启动“游戏”游戏的一部分,所以它可以读取文件,但这是非常小的!非常感谢你,我只是瞎了眼,看不到文件夹的东西。但我记得先创建文件夹,然后再向它们发送。经验教训!再次感谢你!让我开心!