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; } }
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.