Jump to content
Unity Insider Forum
Sign in to follow this  
thewhiteshadow

Skript nur für den Editor

Recommended Posts

Hallo zusammen,

ich hab ein Skript als MonoBehavour einem Objekt angehangen. Es hält eine Datenstruktur, die ich im Editor benötige und auch nur dort. Zur Laufzeit ist das Skript völlig nutzlos. Auch die Datenstruktur brauch ich da nicht mehr. Kann man das irgendwie anders organisieren damit die Daten im Editor verfügbar sind, aber beim build rauskommen?

Share this post


Link to post
Share on other sites

Bin mir jetzt nicht 100%ig sicher ob es das ist was du suchst, aber probier mal folgendes:

#if UNITY_EDITOR
	// Editor-Only-Code
#endif

Alles was innerhalb dieser Directive steht, wird nur im Editor ausgeführt, nicht aber im fertigen Build.

Share this post


Link to post
Share on other sites
Zitat

Es hält eine Datenstruktur, die ich im Editor benötige

 

Zitat

aber kann ich damit auch felder ausschließen

Ich verstehe leider nicht so wirklich was du meinst. Könntest du das bitte noch etwas näher erläutern. Was für Datenstrukturen und was genau meinst du mit Felder?

Share this post


Link to post
Share on other sites

Wenn dein ganzes Skript nicht im Build sein soll, packe es in einen Ordner namens "Editor". Bei serialisierten Feldern musst du aufpassen, wenn du sie Editor-only haben willst. Wenn das Skript ansonsten noch im Build landet (und da auch benutzt wird), gibt es bei der Deserialisierung einen Fehler, weil das Serialisationslayout der Klasse nicht mehr mit der Version im Editor übereinstimmt, von da aber die serialisierten Szenendatan stammen.

Share this post


Link to post
Share on other sites

Danke für die Antwort, aber das mit dem Ordner Editor ist eine ganz schlechte Idee. Der Ordner ist nur für Editor-Skripte. Bei Monobehavours wirft es einen Fehler im Inspektor.

Unity scheint sich allerdings nicht an den verschwundenen Feldern zu stören. Vielleicht weil ohen Zugriff nicht mal die Klasse geladen wird. So genau weiß es auch nicht. Jedenfalls gehts.

Falls jemand ne bessere Lösung hat, wie man Daten im Editor für ein GameObjekt speichern kann ohne Monobehavour nehm ich es gerne an.

Share this post


Link to post
Share on other sites

Wenn du dein Script auf einem GameObject im Build hast, dann wirst du beim Builden einen Fehler kriegen.

Wenn nicht, dann kannst du es ja auch in den Editor-Ordner packen :)

Share this post


Link to post
Share on other sites

Nööp.

Und er jammert nicht beim Build und im Log steht nur sowas: "Unloading 5 Unused Serialized files (Serialized files now loaded: 0)" Was auch immer das heißt.^^

Unbenannt.JPG

Edit: Ich seh grade, dass ich nicht der einzige bin mit demProblem/Lösung:

https://answers.unity.com/questions/686278/can-i-save-data-in-an-editor-class.html

Edited by thewhiteshadow
Link

Share this post


Link to post
Share on other sites

Welche Unity-Version nutzt denn du? Vielleichgt haben sie das ja in 2018.x überarbeitet.

Share this post


Link to post
Share on other sites

Weiß nicht genau, was du da speichern willst, ggf. könntest du es auch in einer Scriptable-Objekt-Klasse ablegen, dann sind diese Daten eben auch keine Szenendaten mehr (= SO-Asset) und SO's funktionieren im Editor in beide Richtungen (lesen / schreiben). Nach einem Build dann nur noch lesend, aber dies würde dich ja nicht stören.

Share this post


Link to post
Share on other sites

Im Build kann man wunderbar Werte von ScriptableObjects ändern. Sind dann halt nur nicht persistent, ist ja klar.

Zu der Exception: Die tritt tatsächlich etwas zufällig auf. Konnte sie jetzt gerade weder in 2017, noch in 2018 reproduzieren. Hatte sie aber in 2017 schon...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×