Inhalt kann nicht mit Monogame mit VS2012 geladen werden

7

Mein Code ist

new GameFont(Content.Load<SpriteFont>("LoadingFont"), "LoadingFont")

Nach dem, was ich gelesen habe, müssen Sie VS2010 verwenden, um Ihre Assets im .xnb-Format zu kompilieren, was ich getan habe, und sie in den Unterordner "Content" in Ihrem bin-Verzeichnis einfügen, was ich auch getan habe. Ich bekomme jedoch eine Fehlermeldung mit dem Inhalt "LoadingFont-Asset konnte nicht geladen werden!".

Ich bin mir nicht sicher, was ich sonst tun soll. Ich habe einen sehr alten Beitrag gelesen, der besagt, dass Assets, die mit XNA 4 erstellt wurden, nicht funktionieren, aber ich weiß nicht, ob das immer noch zutrifft oder wie ich meine Version von XNA auf 3.1 umstellen kann.

Irgendwelche Ideen? Vielleicht gibt es einen besseren Weg ohne VS2010 überhaupt zu benutzen?

    
NibblyPig 24.01.2013, 15:37
quelle

5 Antworten

11

Haben Sie den Inhalt zum Ordner "Inhalt" Ihres Projekts hinzugefügt und legen Sie die Aktion "Erstellen" auf "Inhalt" (im Eigenschaftenfenster) fest.

Ich bin mir nicht sicher, was genau der Prozess ist, um Assets im .xnb-Format zu verwenden. Ich weiß, dass es so gemacht werden kann, aber normalerweise füge ich die Rohbild- und Sounddateien einfach direkt in meinen Inhaltsordner ein. Die Schriften könnten jedoch ein wenig komplizierter sein.

EDIT: 2015

Seit der Erstellung dieser Frage haben sich viele Dinge geändert. Heutzutage verfügt MonoGame über ein eigenes Pipeline-Tool zum Verarbeiten von Inhalten in XNB-Dateien. Das erste, was Sie versuchen sollten, wäre, Ihre SpriteFont mit der neuen Pipeline zu verarbeiten. Auf diese Weise können Sie die Abhängigkeit von XNA vermeiden.

Alternativ dazu können Sie in MonoGame auch Font-Probleme umgehen, indem Sie sie mithilfe des BMFont in eine Textur rendern > tool und benutze MonoGame.Extended , um sie in deinem Spiel zu rendern.

Sobald Sie MonoGame.Extended installiert haben, können Sie mit BMFont erstellte Schriftarten einfach wie folgt laden Sie würden ein SpriteFont , aber stattdessen die Klasse BitmapFont verwenden.

%Vor%

Rendern Sie dann einen Text wie folgt:

%Vor%

Ich habe ein vollständiges Tutorial in meinem Blog

    
craftworkgames 25.01.2013, 01:07
quelle
8

Ich habe MonoGame in VS2012 ohne Probleme verwendet; Content.Load<T>("myContent") funktioniert immer noch für mich. Eine Sache, die mich in letzter Zeit auf frischer Tat ertappt hat (Tipp: Code bei Schlafmangel) ist, dass Sie im Solution Explorer überprüfen müssen, ob Ihre Assets auf "In Ausgabeverzeichnis kopieren" eingestellt sind, oder wenn das Spiel aufbaut Vermögenswerte werden nicht damit gehen, weshalb Sie diesen Fehler bekommen - es kann nicht laden, was nicht da ist! Klicken Sie mit der rechten Maustaste auf Ihre Assets und suchen Sie unter Eigenschaften. Wenn sie auf "Nicht kopieren" eingestellt sind, sollten Sie dies ändern.

    
anaximander 31.01.2013 09:56
quelle
1

Wie @craftworkgames kann ich dir keine vollständige Antwort geben. Aber die herkömmliche Content-Pipeline, die mit XNA 3.1 geliefert wurde, ist in 4 gegangen. Daher müssen alle Assets etwas anders geladen werden. Um beispielsweise ein .png-Asset zum Anzeigen eines Sprites zu laden, mache ich Folgendes:

%Vor%

und fügen Sie die .png-Datei wie üblich zur Lösung hinzu. Ich bin mir ziemlich sicher, dass es etwas Ähnliches für Schriftarten geben wird, aber ich habe es auch noch nicht ganz herausgefunden;)

    
markp3rry 25.01.2013 22:46
quelle
1

Ich hatte das gleiche Problem nicht sicher, ob Sie es gelöst haben oder nicht, aber hier ist was ich getan habe.

Klicken Sie auf die Monogame Content Pipeline im Ordner "Content".

Fügen Sie Ihren Spritefont oder Ihre Textur hinzu.

Stellen Sie in der Monogame-Content-Pipeline sicher, dass Sie die Aktion von "Erstellen" in "Kopieren"

ändern

Wenn Sie den Inhalt einfach laden möchten; texture = Inhalt.Load ("texture.png");

Hoffe, das hilft :)

    
Jonathan Coffey 05.07.2015 11:23
quelle
0

Ich hatte ein ähnliches Problem, aber mit "Windows 8 Store" als Zielplattform ... während alles in Ordnung mit Windows Open GL-Version war. Unter Windows 8 habe ich beim Laden von content.Load ("Fonts / TestFont") erhalten "konnte nicht als Datei ohne Inhalt laden".

Ich habe die MonoGame DLLs in meiner Lösung durch das MonoGame.Windows8 Projekt ersetzt (ich habe die Quellen von CodePlex heruntergeladen) und ich habe etwas Debugging durchgeführt ... und herausgefunden, dass MonoGame nach dem Inhaltsordner im Bin ... \ Debug sucht \ AppX-Ordner ... während der Erstellung wird der Ordner "Content" an einen anderen Ort kopiert. Wenn ich also den Inhalt-Ordner manuell in den AppX-Ordner kopiert habe, ist der Fehler verschwunden und mein Spiel-Prototyp funktioniert jetzt einwandfrei.

Ich denke, ich habe in den Project Preferences für AppX etwas verpasst (vermutlich wird dieser Ordner für den Windows 8 Geräte Emulator benötigt?) oder ... MonoGame sollte den Content Ordner an anderer Stelle suchen ... Anyway I wird den Content-Ordner vorerst manuell erneuern, da er während der Kompilierung an einen falschen Ort kopiert wird.

Ich habe den Content-Ordner in meinem Projekt und die Build-Aktion ist korrekt eingestellt (Inhalt) ... und "Immer kopieren" ist ausgewählt, aber während des Build (Compliation) wird dieser Content-Ordner in den Debug-Ordner kopiert, während er kopiert werden soll Debug \ AppX Ordner sonst MonoGame kann es nicht finden. (Ich bin vielleicht falsch mit genauen Wegen, weil ich gerade bei der Arbeit bin und das Problem bei meinem Heim-PC ist)

Vielleicht ist es nur ein Konfigurationsproblem in meinem Visual Studio 2012.

Ich hoffe, diese Informationen helfen Ihnen.

    
SergeiP 06.02.2013 07:56
quelle

Tags und Links