1

在此处输入图像描述所以我有一个小问题,我第一次从电子表格数据创建可编写脚本的对象,试图使用数据库自​​动制作它们......

for (int m = 0; m < myAssets.Count; m++)
            {
               Drill_WordBase newWordAsset = ScriptableObject.CreateInstance<Drill_WordBase>();

                // overwrite the defaults with the json data
                newWordAsset.word = word;
                    newWordAsset.isTrue = false;
                    myList.Add(newWordAsset);

                AssetDatabase.CreateAsset(newWordAsset, "Assets/DrillWords/" + newWordAsset.name);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                EditorUtility.FocusProjectWindow();
                Selection.activeObject = newWordAsset;
            }

它“部分有效”但是我不明白如何让它正确保存文件。由于在 Assets/Drill_Words/ 文件夹中有某种文件,但没有包含所有信息的可编写脚本的对象(参见图片)但是,DrillWords 列表具有可编写脚本的对象,我尚未测试它们是否具有所有数据,我在停止播放后丢失了这些可编写脚本的对象?

知道我做错了什么,如何保存它们?

谢谢 - N

4

3 回答 3

2

不知道你解决了没有。

但是,您做得对,您只是错过了这一点:

AssetDatabase.CreateAsset(newWordAsset, "Assets/DrillWords/" + newWordAsset.name + ".asset");
于 2020-10-15T15:08:39.367 回答
1

您不能在运行时保存可编写脚本的对象。请改用编辑器脚本。

否则,如果您在运行时加载“电子表格”作为应用程序/游戏的一部分,请改为使用JSONUtility来序列化和反序列化公共[Serializable]类和结构[SerializeField]

于 2019-10-27T23:42:33.390 回答
0

根据后者,这在运行时有效并运行。

void Start()
{
    createScriptableObject();
}

void createScriptableObject()
{
    CustomClass newItem = ScriptableObject.CreateInstance<CustomClass >();
    newItem.name = "name";
    AssetDatabase.CreateAsset(newItem, "Assets/NewScriptableClasses/Test.asset");
}
于 2022-03-03T03:38:00.887 回答