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; } }