AssetDatabase.AddObjectToAsset
Declaration
public static void AddObjectToAsset(Object objectToAdd, string path);Параметры
| Параметр | Описание |
|---|---|
| objectToAdd | Объект для добавления к существующему ассету. |
| путь | Project относительный путь к объекту назначения. |
Описание
Добавляет objectToAdd к существующему ассету в path.
Пожалуйста, обратите внимание, что вы должны добавлять объекты только в '.asset' assets, импортированные модели или объекты текстуры, например, потеряют свои данные.
Все пути относятся к папке проекта.
Примечание: Вы не можете добавить GameObjects; используйте PrefabUtility вместо этого.
using UnityEngine; using UnityEditor;
public class AddObjectToAssetPathExample { [MenuItem("AssetDatabase/AddObjectToAssetPathExample")] static void AddObjectToPathExample() { // Create a simple material object Material material = new Material(Shader.Find("Specular")); material.name = "My material";
// Create an instance of a simple scriptable object DummyObject dummyObject = ScriptableObject.CreateInstance<DummyObject>(); dummyObject.name = "My scriptable asset";
// Create the scriptable object asset AssetDatabase.CreateAsset(dummyObject, "Assets/dummyObject.asset");
// Get the path of the scriptable object asset string dummyObjectPath = AssetDatabase.GetAssetPath(dummyObject);
// Add the material to the scriptable object asset AssetDatabase.AddObjectToAsset(material, dummyObjectPath);
// Serializing the changes in memory to disk AssetDatabase.SaveAssets();
// Print the path of the created asset Debug.Log(AssetDatabase.GetAssetPath(dummyObject)); } }
// The DummyObject class used in the example above public class DummyObject : ScriptableObject { public string objectName = "dummy"; }
Declaration
public static void AddObjectToAsset(Object objectToAdd, Object assetObject);Параметры
| Параметр | Описание |
|---|---|
| objectToAdd | Объект для добавления к существующему ассету. |
| assetObject | Назначение ассета. |
Описание
Добавляет objectToAdd к существующему ассету, идентифицированному assetObject.
Примечание: Наличие objectToAdd на диске до вызова AddObjectToAsset приведет к ошибке (например, попытка добавить "MyMaterial" к существующему ассету): "Не удалось добавить объект к файлу ассета, так как Материал 'MyMaterial' уже является ассетом в 'Assets/MyMaterial.mat'!"
Примечание: Вы должны сериализировать изменения в памяти на диск.
Это потому, что ассеты, которые были изменены в памяти, должны быть сохранены на диск.
Если этого не сделать, то появится предупреждение о непоследовательном результате, так как изменения в памяти ассета будут потеряны.
using UnityEngine; using UnityEditor;
public class AddObjectToAssetExample { [MenuItem("AssetDatabase/AddObjectExample")] static void AddObjectExample() { // Create a simple material object Material material = new Material(Shader.Find("Specular")); material.name = "My material";
// Create an instance of a simple scriptable object DummyObject dummyObject = ScriptableObject.CreateInstance<DummyObject>(); dummyObject.name = "My scriptable asset";
// Create the scriptable object asset AssetDatabase.CreateAsset(dummyObject, "Assets/dummyObject.asset");
// Add the material to the scriptable object asset AssetDatabase.AddObjectToAsset(material, dummyObject);
// Serializing the changes in memory to disk AssetDatabase.SaveAssets();
// Print the path of the created asset Debug.Log(AssetDatabase.GetAssetPath(dummyObject)); } }
// The DummyObject class used in the example above public class DummyObject : ScriptableObject { public string objectName = "dummy"; }