示例#1
0
 // 运行时新增外部数据.
 public void AddExternalData(GKToyExternalData d)
 {
     if (externalDatas.Contains(d))
     {
         return;
     }
     externalDatas.Add(d);
     _tmpNewData.Add(d.data);
 }
示例#2
0
        /// <summary>
        /// 从备份文件还原数据
        /// </summary>
        public bool Restore()
        {
            string filePath = string.Format("{0}/OverlordBackup/overlord_{1}_back.dbak", Path.GetDirectoryName(AssetDatabase.GetAssetPath(internalData)), internalData.name);

            if (!File.Exists(filePath))
            {
                filePath = EditorUtility.OpenFilePanel("Restore data", Application.dataPath, "");
            }
            try
            {
                bool              hasDataChanged = false;
                OverlordBackData  backData       = JsonConvert.DeserializeObject <OverlordBackData>(File.ReadAllText(filePath));
                GKToyExternalData internData     = AssetDatabase.LoadAssetAtPath <GKToyExternalData>(backData.internalData.resourcePath);
                internData.data = JsonConvert.DeserializeObject <GKToyData>(File.ReadAllText(backData.internalData.backupPath).Replace("\t\n", "\\n"));
                if (internData.data.RestoreData(this) && !hasDataChanged)
                {
                    hasDataChanged = true;
                }
                List <GKToyExternalData> externDatas = new List <GKToyExternalData>();
                foreach (var external in backData.externalDatas)
                {
                    GKToyExternalData externData = AssetDatabase.LoadAssetAtPath <GKToyExternalData>(external.Value.resourcePath);
                    externData.data = JsonConvert.DeserializeObject <GKToyData>(File.ReadAllText(external.Value.backupPath).Replace("\t\n", "\\n"));
                    if (externData.data.RestoreData(this) && !hasDataChanged)
                    {
                        hasDataChanged = true;
                    }
                    externDatas.Add(externData);
                }
                isPlaying     = backData.isPlaying;
                internalData  = internData;
                externalDatas = externDatas;
                if (hasDataChanged)
                {
                    Debug.Log("Unmatched backup data upgraded, please re-edit changed properties");
                }
                return(true);
            }
            catch
            {
                return(false);
            }
        }