编辑代码

using System;


public static class CSVTool
{
    public static SaveNewScriptableObject(TextAsset sourceObject)
    {
        string csvPath;
        string saveDirectory = new FileInfo(AssetDatabase.GetAssetPath(sourceObject)).DirectoryName;
        csvPath = EditorUtility.SaveFolderPanel("", saveDirectory,sourceObject.name);

        //我们添加第一层判断,提示不要将内容储存到项目外
        string dataPath = Application.dataPath;
        if(folderPath.IndexOf(dataPath, System.StringComparison.InvariantCultureIgnoreCase) == -1)
        {
            Debug.LogError("");
            return;
        }

        //这里的切片操作为什么是6,这是由于我们需要保留Assets的开头,建议大家打印出来看是否-6的效果。这里我们的路径要使用相对路径,这是为了跨平台准备的。
        string fileName = "Data";  // 文件名称,
        string relativeFolderPath = folderPath.Substring(dataPath.Length - 6); // 保存相对路径,
        string text_Path_NoExt = relativeFolderPath + "/" + fileName; // 保存文件的路径(不含扩展名)

        //检查路径下是否存在同名的,存在同名的进行更新,不同名的创建
        PlayerDataObject playerDataObj = AssetDatabase.LoadAssetAtPath<PlayerDataObject>(text_Path_NoExt + ".asset");
        if(playerData == null)
        {
            Debug.Log("不存在");
            //实例化一个ScriptableObject,然后赋值
            playerDataObj = ScriptableObject.CreateInstance<PlayerDataObject>();
            playerDataObj.speed = 10f;
            //最后创建一个资源
            AssetDatabase.CreateAsset(playerDataObj, text_Path_NoExt + ".asset");

        }
        else
        {
            //更新里面的内容
            Debug.Log("已存在");
            playerDataObj.speed = 10f;
        }

    }
}


public class PlayerDataObject : ScriptableObject
{
    public float speed;
}