Подтвердить что ты не робот

Как избежать двух файлов в представлении проекта при создании пользовательского импортера в Unity3D?

ПРИМЕЧАНИЕ. Я использую более широкую сеть, чем Unity Answers, мой оригинальный вопрос можно найти здесь.

Я создал импортер ProTools CueSheet. Он использует OnPostprocessAllAssets() для обнаружения файлов в проекте с расширением .cuesheet. Затем он запускает эти файлы cuesheet через мой парсер. Это создает объект ScriptableObject, который затем превращается в актив через Database.CreateAsset().

Проблема в том, что это оставляет меня с двумя файлами, оригинальным списком и вновь созданным активом. Есть ли способ генерировать актив таким образом, чтобы исходный код использовался как актив, так же, как и текстуры или файлы FBX?

public class CueSheetPostProcessor : AssetPostprocessor {
    static string extension = ".cuesheet";

    static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) {
        foreach (string assetPath in importedAssets) {
            if (assetPath.EndsWith(extension, StringComparison.OrdinalIgnoreCase)) {
                string newPath = assetPath + ".asset";
                Session session = CueImporter.Load(assetPath);
                AssetDatabase.CreateAsset(session, newPath);
                AssetDatabase.SaveAssets();
            }
        }
    }
}
4b9b3361

Ответ 1

Я бы создал PropertyDrawer для Serializable class CueSheet, чтобы он принимал .cueSheet TextAsset или путь к файлу .cueSheet и создавал экземпляр класса CueSheet и назначал его или изменял он.

Ответ 2

Вместо того, чтобы создавать новый актив, попробовали ли вы вместо этого использовать AssetDatabase.AddObjectToAsset? Файл в Assets может "удерживать" несколько активов и несколько типов активов. При импорте .fbx вывод в инспекторе проекта - это несколько вещей: дерево GameObject (т.е. Prefab), некоторые модели, возможно, буровая установка и т.д. Все они "содержатся" в обработанном формате .fbx