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

OnValidate Problem

Recommended Posts

Grüße!

Ich möchte über die Methode "OnValidate" ein anderes GameObject finden. Dies funktioniert an sich sehr gut. Problem ist nur, wenn ich das GameObject in dem sich die OnValidate Methode befindet zu einem Prefab mache, versucht das Script im Prefab auch das GameObject zu finden, findet es jedoch nicht und verursacht eine rote Fehlermeldung. Kann man OnValidate an eine Bedingung knüpfen, dass es als Prefab nicht arbeitet?

Grüße von Kojote

Share this post


Link to post
Share on other sites

Problem gelöst, das suchen des Objektes habe ich nun in die Methode "OnEnable" ausgelagert, damit wäre der Fehler beseitigt. :)

Share this post


Link to post
Share on other sites

Problem doch nicht gelöst! OnEnable verursacht zwar keinen Bug, reagiert aber nicht an der Stelle wo ichs brauch.

Share this post


Link to post
Share on other sites

Ich kann dir gern ma nen Projekt rüber schieben. Im Grunde ist es ein Minimap-Asset. Ich füge ein Script einem Objekt hinzu und dieses soll beim Start sich Daten vom Hauptscript holen, in dem alle Infos zu den Sprites hinterlegt sind.. Das alles funktioniert über den Editor. Problem ist, Über OnValidate soll er sich diese Infos beziehen. Dies funktioniert aber nicht, wenn ich es als Prefab ablege.

Share this post


Link to post
Share on other sites
vor 16 Stunden schrieb Kojote:

Über OnValidate soll er sich diese Infos beziehen

Ja, da ist direkt schon einmal der Fehler. OnValidate ist dafür nicht gemacht und deshalb funktioniert auch nicht viel damit.

Warum willst du jetzt im Editor automatisiert Daten von A nach B schieben? Entweder, die Daten stehen schon im Editor fest, dann ziehst du die einmalig mit der Hand da rein, lässt das serialisieren und fertig, oder eben nicht, dann machst du das in Awake oder Start zur Laufzeit, je nach dem.

Share this post


Link to post
Share on other sites

OK, habs mal entfernt und funktioniert so nun besser. Für was nutzt man dann OnValidate? Doch eigentlich um zu aktualisieren, ob im Inspector etwas geändert wurde, oder?

Share this post


Link to post
Share on other sites

Es ist, wie der Name schon sagt, zum Validieren von Werten, die im Inspector eingegeben wurden. Wenn dein Zahlenwert z.B. zwischen 10 und 20 sein muss, dann kannst du das in dieser Methode sicherstellen. Für diesen Fall gibt es natürlich auch das [Range]-Attribut, aber nur so als Beispiel. Es ist nicht dafür vorgesehen, etwas komplexeres zu machen als "Wenn Wert nicht innerhalb der Parameter, ändere Wert sodass innerhalb der Parameter".

Share this post


Link to post
Share on other sites

Kommt halt drauf an, was du machst. Änderungen im Editor gibt's viele, und je nach dem, was du da tust, ist eine andere Herangehensweise sinnvoll. OnValidate ist eine davon, nämlich um zu definieren, was für Werte "valide" sind und diese zu erzwingen.

Share this post


Link to post
Share on other sites

Schreib doch bitte mal, was du machen willst - warum muss ich dir denn alles aus der Nase ziehen?

Du wählst einen Enum-Wert aus, und dann was? Du möchtest, dass sich etwas ändert, nehme ich an. Was soll sich den ändern?

Und warum soll das im Editor geschehen? Wenn du einen Enum-Wert hast und ein anderer Wert ist von diesem Wert abhängig, warum willst du die Information dann doppelt speichern?

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  

×