U_ScriptableObject 动态创建与加载

ScriptableObject 动态创建

    [MenuItem("Assets/RoomRandom/LoadScriptableObject")]
    public static void LoadScriptableObject() {
        // 脚本名 (不包含后缀)
        var typeName = "SO";
        // 获取脚本
        var type = System.Reflection.Assembly.Load("Assembly-CSharp").GetType(typeName);
        // 实例化脚本
        SO soFile = (SO) System.Activator.CreateInstance(type);
        // 脚本赋值
        soFile.saveName = "newOne";
        // 创建资源
        AssetDatabase.CreateAsset(soFile, $"Assets/{typeName}.asset");
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
        // 聚焦资源
        EditorUtility.FocusProjectWindow();
        Selection.activeObject = soFile;
    }

加载,使用 Resource 加载,作为只读文件

    [MenuItem("Assets/RoomRandom/LoadScriptableObject")]
    public static void LoadScriptableObject() {
        var path = "SO/";
        var fileName = "MySO";
        var obj = Resources.Load<SO>(path + fileName);
        Debug.Log(obj.saveName);// 输出
    }

posted @ 2022-04-20 15:21  匿鱼  阅读(279)  评论(0)    收藏  举报