static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
    {
        // 「一番左の行はint型!」「その右の行はfloat型!」「その右の行はstring型!」
        // でなければならない様子!


        string targetFile = "Assets/CSVtoScriptableObj/Files/Data.csv";
        string exportFile = "Assets/CSVtoScriptableObj/Files/Data.asset";

        foreach (string asset in importedAssets)
        {
            // 合致しないものはスルー
            if (!targetFile.Equals(asset))
            {
                continue;
            }

            // 既存のマスタを取得
            Data data = AssetDatabase.LoadAssetAtPath <Data>(exportFile);

            // 見つからなければ作成する
            if (data == null)
            {
                data = ScriptableObject.CreateInstance <Data>();
                AssetDatabase.CreateAsset((ScriptableObject)data, exportFile);
            }
            // 中身を削除
            data.param.Clear();

            // CSVファイルをオブジェクトへ保存
            using (StreamReader sr = new StreamReader(targetFile)) {
                // ヘッダをやり過ごす
                sr.ReadLine();

                // ファイルの終端まで繰り返す
                while (!sr.EndOfStream)
                {
                    string   line     = sr.ReadLine();
                    string[] dataStrs = line.Split(',');

                    // 追加するパラメータを生成
                    Data.Param p = new Data.Param();
                    // 値を設定する
                    p.intValue    = int.Parse(dataStrs[0]);
                    p.floatValue  = float.Parse(dataStrs[1]);
                    p.stringValue = dataStrs[2];
                    // 追加
                    data.param.Add(p);
                }
            }

            // 保存
            AssetDatabase.SaveAssets();

            Debug.Log("Data updated.");
        }
    }
Ejemplo n.º 2
0
        /// <summary>
        /// Adds or updates the given model in the database
        /// depending on its state.
        /// </summary>
        /// <param name="model">The model</param>
        public async Task Save(Param model)
        {
            var param = await _db.Params
                        .FirstOrDefaultAsync(p => p.Id == model.Id)
                        .ConfigureAwait(false);

            if (param == null)
            {
                param = new Data.Param
                {
                    Id      = model.Id != Guid.Empty ? model.Id : Guid.NewGuid(),
                    Created = DateTime.Now
                };
                await _db.Params.AddAsync(param).ConfigureAwait(false);
            }
            param.Key          = model.Key;
            param.Description  = model.Description;
            param.Value        = model.Value;
            param.LastModified = DateTime.Now;

            await _db.SaveChangesAsync().ConfigureAwait(false);
        }
Ejemplo n.º 3
0
 protected static string BuildSeenKey(int topLevel, Data.Param param)
 {
     return(JoinStrings("_",
                        topLevel.ToString(),
                        !string.IsNullOrEmpty(param.tag) ? param.tag : param.ID.ToString()));
 }