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);// 输出
}


浙公网安备 33010602011771号