Version: 2020.3
public static void AddConfigObject (string name, Object obj, bool overwrite);

参数

name 采用字符串格式的对象引用的名称。此字符串名称在项目中必须唯一,否则 overwrite 参数必须设置为 true。
obj 要存储的对象引用。此对象必须保持,且不为 null
overwrite 布尔值参数,用于指定需要在存在同名条目时将其覆盖。

返回

void 如果对象为 null,并未保持,或者存在名称冲突且 overwrite 参数设置为 false,则抛出异常。

描述

按名称存储对配置对象的引用。对象必须是项目中的资源,否则在重新启动编辑器或重新加载脚本时将不会保存该对象。为避免与其他包产生名称冲突,建议使用命名空间对名称加以限定,即"company.package.name"。

using UnityEngine;
using UnityEditor;
using System.IO;

public class MyConfigData : ScriptableObject { public static MyConfigData GetDefault() { //name of config data object string stringName = "com.myproject.myconfigdata"; //path to Config Object and asset name string stringPath = "Assets/myconfigdata.asset"; //used to hold config data MyConfigData data = null;

//if a config data object exists with the same name, return its config data if (EditorBuildSettings.TryGetConfigObject<MyConfigData>(stringName, out data)) return data;

//If the asset file already exists, store existing config data if (File.Exists(stringPath)) data = AssetDatabase.LoadAssetAtPath<MyConfigData>(stringPath); //if no previous config data exists if (data == null) { //show save file dialog and return user selected path name stringPath = EditorUtility.SaveFilePanelInProject("New Config File", "myconfigdata", "asset", "Select Config File Asset", "Assets"); //initialise config data object data = ScriptableObject.CreateInstance<MyConfigData>(); //create new asset from data at specified path //asset MUST be saved with the AssetDatabase before adding to EditorBuildSettings AssetDatabase.CreateAsset(data, stringPath); }

//add the new or loaded config object to EditorBuildSettings EditorBuildSettings.AddConfigObject(stringName, data, false);

return data; } }