Ответ 1
Я бы создал PropertyDrawer
для Serializable
class CueSheet
, чтобы он принимал .cueSheet TextAsset
или путь к файлу .cueSheet
и создавал экземпляр класса CueSheet
и назначал его или изменял он.
ПРИМЕЧАНИЕ. Я использую более широкую сеть, чем 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();
}
}
}
}
Я бы создал PropertyDrawer
для Serializable
class CueSheet
, чтобы он принимал .cueSheet TextAsset
или путь к файлу .cueSheet
и создавал экземпляр класса CueSheet
и назначал его или изменял он.
Вместо того, чтобы создавать новый актив, попробовали ли вы вместо этого использовать AssetDatabase.AddObjectToAsset? Файл в Assets может "удерживать" несколько активов и несколько типов активов. При импорте .fbx вывод в инспекторе проекта - это несколько вещей: дерево GameObject (т.е. Prefab), некоторые модели, возможно, буровая установка и т.д. Все они "содержатся" в обработанном формате .fbx