Unity3D 存储 .asset 文件 例子

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Node : ScriptableObject {

    public string Name;
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class FlowNode : Node {

    public string Type;
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GraphSerializationData : ScriptableObject {

    public List<Node> list = new List<Node>();
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class TestSerializationTool {
    [MenuItem("Assets/TestSerialization")]
    static void TestSerialization() {
        Debug.Log("TestSerialization");

        GraphSerializationData data = ScriptableObject.CreateInstance<GraphSerializationData>();

        string filePath = "Assets/testAsset.asset";
        AssetDatabase.DeleteAsset(filePath);
        AssetDatabase.CreateAsset(data, filePath);
        AssetDatabase.Refresh();


        FlowNode fn = ScriptableObject.CreateInstance<FlowNode>();
        fn.Name = "lzz";
        fn.Type = "123";

        data.list.Add(fn);

        AssetDatabase.AddObjectToAsset(fn, data);

        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();


    }
}

上面的例子 演示 有继承关系的类都可以存储到.asset中。

可以尝试使用 : [PreferBinarySerialization]

参考:https://answers.unity.com/questions/842058/serializing-a-collection-of-scriptableobjects-to-a.html

猜你喜欢

转载自blog.csdn.net/aa20274270/article/details/82895811
今日推荐