HINWEIS: Ich bin ein breiteres Netz als Unity Antworten, meine ursprüngliche Frage kann here gefunden werden.Wie vermeiden Sie zwei Dateien in der Projektansicht beim Erstellen eines benutzerdefinierten Importers in Unity3D?
Ich habe ein ProTools CueSheet-Importer erstellt. Es verwendet OnPostprocessAllAssets()
, um Dateien im Projekt mit der Erweiterung .cuesheet
zu erkennen. Es führt dann diese Cuesheet-Dateien über meinen Parser aus. Dies erzeugt ein ScriptableObject, das dann über Database.CreateAsset()
in ein Asset umgewandelt wird.
Das Problem ist, dies hinterlässt mich mit zwei Dateien, dem ursprünglichen Cuesheet und dem neu generierten Asset. Gibt es eine Möglichkeit, das Asset so zu generieren, dass das ursprüngliche Cuesheet als Asset fungiert, genauso wie Texturen oder FBX-Dateien?
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();
}
}
}
}
"enthalten" Ich vermute, dass dies nicht möglich ist, aber ich bin nicht 99% sicher. Es kann unbequem sein, zwei Dateien gleichzeitig zu haben, aber gibt es irgendwelche großen Nachteile? –
@golergka Es verwirrt, was ein Asset ist und was eine Quelldatei ist. Viele Kerntypen wie FBX, WAV, MP3 usw. werden alle an Ort und Stelle konvertiert. Es gibt beispielsweise kein Asset neben einer FBX. Es gibt eine sehr kleine Dokumentation darüber, dass sie "Repräsentationen" genannt werden. Ich versuche herauszufinden, ob dies mit benutzerdefinierten Formaten möglich ist, aber ich kann es nicht rechtfertigen, Importeure im Wert von mehreren hundert Dollar im Unity Asset Store herunterzuladen, um ihre Quelle zu durchsuchen, nur um das herauszufinden. – Soviut
Wenn Unity Assets importiert, erstellt es die Datei, die es tatsächlich verwendet, im Bibliotheksordner unter dem Projekt. Wenn Sie sich die .meta-Dateien anschauen, die beispielsweise zu einem WAV gehören (setzen Sie es in den Projekteinstellungen auf Text, wenn es in binary angezeigt wird), finden Sie dort eine GUID, und Sie werden eine Datei namens GUID finden der Bibliotheksordner. Vielleicht können Sie das Gleiche mit Ihrem Importeur machen? – itchee