Unity 6.3
0 онлайн 2 гостей 3 в системе
Вход

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