Jump to content
Unity Insider Forum

Spiel kann nicht exportiert werden


Emerald

Recommended Posts

Hallo zusammen,

ich habe mein erstes Spiel mit Unity entwickelt und möchte dieses nun für Mac, Linux und Windows exportieren. Dazu habe ich mir auch schon Tutorials angeschaut. Als ich es jedoch exportieren wollte, bekam ich folgende Fehlermeldung:

"Cannot build player while editor is importing assets or compiling scripts"

Daraufhin habe ich im Internet nach einer Lösung gesucht und ich habe gelesen, dass man die Zeile "using UnityEditor" in seinen Skripts entfernen soll. Das habe ich versucht, jedoch bekam ich dann jede Menge Errors mit dem "MonoBehaviour". Also habe ich weiter gesucht und habe auf Stackoverflow gelesen, dass man einen neuen Ordner namens "Editor" erstellen soll, und seine Skripts da rein ziehen soll. Das habe ich gemacht und konnte mein Spiel dann auch exportieren. Allerdings waren die Skripts nicht mehr mit den GameObjects verbunden und nichts hat funktioniert. Daraufhin habe ich versucht, die Skripts auf die jeweiligen GameObjects zu ziehen, bekam dann aber den Error:

Can't add script. The script is an editor script.

Dazu habe ich auch schon das Internet durchsucht, allerdings nichts hilfreiches gefunden. Deshalb hier eine Zusammenfassung meiner Frage: Wie kann ich mein Spiel exportieren, ohne den ersten Error zu bekommen und die Skripts auf die GameObjekts zu bewegen, dass ich das Spiel spielen kann?

Vielen Dank für eure Hilfe, Emerald

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Lösung, die du gefunden hast, hat überhaupt nichts mit deiner Fehlermeldung zu tun. Du kannst nicht einfach irgendeinen Lösungsvorschlag heraussuchen und ohne ein Verständnis dafür, ob und wie dieser Vorschlag dein Problem behebt, anwenden.

Deine Fehlermeldung besagt ganz eindeutig, dass der Editor gerade in Assets importiert oder Scripts kompiliert, also gerade Dinge tut, deren Ergebnis Einfluss auf deinen Build haben werden. Gleichzeitig einen Build anfertigen zu lassen wäre nicht besonders schlau - du reißt ja auch nicht einem Zeichner das Blatt Papier unterm Stift weg, um es in den Scanner zu legen. Achte also unten rechts im Editor darauf, ob da der Ladekringel am drehen ist. Wenn der fertig ist, kannst du zu builden anfangen.

Die Zeile "using UnityEditor;" kommt (hoffentlich) nur in Code vor, der ausschließlich im Editor relevant ist. Man kann den Unity-Editor ja beliebig erweitern, zum Beispiel mit Fenstern, mit denen man Dinge editieren kann. Code, der so etwas macht, hat im Build logischerweise nichts zu suchen. Darum kommt er in einen Ordner namens "Editor", und alles, was da drin ist wird vom Build ausgeschlossen. Ist aber wie gesagt ein völlig anderes Problem als das, was die Fehlermeldung wirft.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Stunden schrieb Sascha:

Achte also unten rechts im Editor darauf, ob da der Ladekringel am drehen ist. Wenn der fertig ist, kannst du zu builden anfangen.

Danke erstmal für deine Erklärung. Allerdings sehe ich unten rechts keinen Ladekringel. Könntest du vielleicht einen Screenshot posten, das ich weiss was du meinst? Danke.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich hab jetzt in der Konsole geschaut, allerdings finde ich da solche Warnungen (siehe Bild), wobei ich zwar im Script selber keine Reference zu dem Game Object habe, diese aber in die jeweiligen Kästen in Unity gezogen hat. Liegt es vielleicht daran?

693853549_Bildschirmfoto2020-05-05um18_22_09.png.d058df425b6e438030f013005bdeae6e.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

CS0649 kommt davon, dass der Compiler (aktuell noch!) nicht versteht, dass [SerializeField] genutzt wird, um über den Editor einen Wert zuzuweisen. Wenn du daher

[SerializeField]
private Type fieldName;

hast, dann denkt der Compiler, dass hier niemals ein Wert zugewiesen wird, denn im Code machst du das ja natürlich nicht. Die Warnung kriegst du mit einem default-Wert weg:

[SerializeField]
private Type fieldName = default;

Also... man kann wirklich "default" da hinschreiben und das Feld wird mit einem dem Typ entsprechenden Standardwert initialisiert (in der Regel dann "null"). Unity schreibt den im Editor gesetzten Wert danach da rein, ist also kein Konfliktpotential.

Auch wenn Warnungen eigentlich ausschließlich dafür da sind, dir zu sagen, dass der Compiler vermutet, dass das Programm nicht so läuft, wie du es denkst (und nicht mit irgendetwas zusammenhängen, was dich am Compilen, Builden oder Ausführen des Programms hindern könnte), ist es sinnvoll, sich um alle Warnungen zu kümmern. Wenn die Konsole dann leer ist, kannst du mit Sicherheit sagen, dass was auch immer dir gerade ein Bein stellt keine Fehlermeldungen oder Warnungen ausgibt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...