Unity3D данные ScriptableObject изменяются, но не пишутся в файл

В MonoBehaviour классе задана ссылка на ScriptableObject.

В режиме редактирования при помощи GUILayout.Button задаются его данные.

Сохраняем. Данные, вроде, сохранены. Даже выбранный ScriptableObject в инспекторе отображает данные. Но содержащий ScriptableObject файл на диске пустой.

Любой MonoBehaviour, кроме того, что редактировал данные того же ScriptableObject-а видит данные пустыми.

public TextAsset text;
[SerializeField]
// Ссылка на **ScriptableObject**
public PathFramesList pathFramesList;
[SerializeField]
// Данные, которые собираюсь сохранить
public List<List<ICurveData>> frameDatasList = new List<List<ICurveData>>();
// Метод вызван кнопкой в **CustomEditor**
public void ReadData()
{
    #region генерируем данные

    var separator = new string[] { "%" };
    var framesUnparsedData = text.text.Split(separator, StringSplitOptions.None);
    foreach (var f in framesUnparsedData)
        frameDatasList.Add(ParseFrame(f));
    var result = new ICurveData[frameDatasList.Count][];
    for (int i = 0; i < frameDatasList.Count; i++)
        result[i] = frameDatasList[i].ToArray();

    #endregion

    #region пытаемся сохранить

    pathFramesList.frameDatasList = result;
    EditorUtility.SetDirty(pathFramesList); // Even This didn't help
    AssetDatabase.SaveAssets(); // Looks it doesn't work
    AssetDatabase.Refresh(); // Hoped this will help, whatever it do

    #endregion

}

Вот, собственно, ScriptableObjectClass И его CustomEditor

[CreateAssetMenu(fileName = "ParsedPathData", menuName = "Create Path Data Asset")]
[System.Serializable]
public class PathFramesList : ScriptableObject
{
    [SerializeField]
    // Массив Массивов экземпляров классов
    // реализующих интерфейс **ICurveData**
    public ICurveData[][] frameDatasList;
}

#if UNITY_EDITOR
[CustomEditor(typeof(PathFramesList))]
public class PathFramesListEditor : Editor
{
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        PathFramesList pathFrameList = (PathFramesList)target;
        if(pathFrameList.frameDatasList == null)
        {
            GUILayout.TextField("Frames Count is 0");
        }
        else
        {
            // Эти Данные отображаются в дебаггере и в инспекторе
            GUILayout.TextField("Frames Count is " + pathFrameList.frameDatasList.Length, 200);
        }
        if(GUILayout.Button("SaveAsset"))
        {
            // Акт отчаяния. Надеялся, что поможет
            
            EditorUtility.SetDirty(target);
            EditorUtility.SetDirty(serializedObject.targetObject);
            serializedObject.Update();
            serializedObject.ApplyModifiedProperties();
            AssetDatabase.SaveAssets();
        }
    }
}
#endif

Ответы (0 шт):