Параметры
name | Имя ссылки на объект в строковом формате. Это строковое имя должно быть уникальным в пределах вашего проекта, или для параметра перезаписи должно быть установлено значение true.. |
obj | Oссылка на объект для сохранения. Этот объект должен быть постоянным и не null . |
overwrite | Логический параметр, используемый для указания того, что вы хотите перезаписать запись с таким же именем, если она уже существует.. |
Возвращает
void Генерирует исключение, если объект имеет значение null
, не сохраняется, или если имеется конфликт имен и для параметра перезаписи задано значение 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(stringName, out data))
return data;
//If the asset file already exists, store existing config data
if (File.Exists(stringPath))
data = AssetDatabase.LoadAssetAtPath(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 FileAsset", "Assets");
//initialise config data object
data = ScriptableObject.CreateInstance();
//create new asset from data at specified path
//asset MUST be saved with the AssetDatabase before adding to EditorBuildSettingsAssetDatabase.CreateAsset(data, stringPath);
}
//add the new or loaded config object to EditorBuildSettingsEditorBuildSettings.AddConfigObject(stringName, data, false);
return data;
}
}