File.WriteAllText只能执行一次,不知为何?

我做了一个背包系统,点击物品的出售按钮,会降低物品的数量,通过可写目录来存物品信息(模拟服务器数据),每次修改物品数量时,都会File.WriteAllText 一次。但问题出现了,我点击出售,可写目录下的json文件可以被修改一次,之后再怎么出售,数量都不会变,必须重新Play一次,才能修改一次,不知道是不是Bug,请各路大神给予指导。File.WriteAllText 在倒数第2行

public class RoleServerData
{

    //把数据存到这个变量里
    public static JsonData Data;
    //模拟服务器的Json数据存取和修改
    public static void ReadServerJson(string path)
    {
        string json = File.ReadAllText(path, Encoding.UTF8);
        //Debug.Log(json);

        Data = JsonMapper.ToObject(json);//还需要更高MainMenu的C
        //这里要注意data是引用传参,其他任何地方修改,都会影响原始数据
    }
    //修改数据的方法,比如添加和删除
    public static void ChangeItemCount(int id, int count)
    {
        //循环遍历,在[Items]下,修改道具数量,如果道具数量变为0 ,则删除该行
        for (int i = 0; i < Data.Count; i++)
        {
            if (id == (int)Data["Items"][i]["ItemID"])
            {

                int newCount = (int)Data["Items"][i]["Count"] + count;
                Debug.Log(newCount);
                if (newCount == 0)
                {
                    //因为JSON支持null,因此不能删除数据

                    //把原始数据存出来
                    string old = Data["Items"].ToJson();
                    //再把数据清空
                    Data["Items"] = new JsonData();
                    //再把另一个jsondata存数据,并进行遍历
                    JsonData newData = JsonMapper.ToObject(old);
                    //遍历让Data重新装入每个道具信息,让ID相同的道具跳过
                    for (int j = 0; j < newData.Count; j++)
                    {
                        //如果id 相同跳过
                        if ((int)newData[j]["ItemID"] == id)
                        {
                            continue;
                        }
                        //把每个道具的数据重新装回Data
                        Data["Items"].Add(newData[j]);
                    }
                    break;//如果进入了这个if,就跳出循环,避免后面的代码执行
                }
                else
                {
                    Data["Items"][i]["Count"] = newCount;
                    Debug.Log((int)Data["Items"][i]["Count"]);
                }
                break;//如果已修改好了道具数量,就跳出循环,避免后面的代码执行
            }
        }
        //把data重新写入到模拟服务器中s
        File.WriteAllText(Config.rolePath, Data.ToJson(), Encoding.UTF8);
        Debug.Log(Data["Items"].ToJson());
    }

 

补充一下,点击出售时,View下数量会减少,但是json文件中的数量只减少一次。重新play后,数量又变为少一次的数量。比如10个奶酪,点了三下出售,View显示为7,但是重新play后,奶酪会变成9,仅为第一次出售所剩的数量。

不知道是否存在缓存问题,导致你每次读的数据,都是原数据而不是修改后的数据。