Jump to content
Unity Insider Forum

Buttons, Event System und Raycast Target


DI3FL4MM3

Recommended Posts

Hallo Leute,

Wie schon in meinem Vorstellungsthema geschrieben bin ich relativ neu in Unity aber konnte schon so Einiges lernen.
Um meine aktuelle Lernkurve ein wenig zu steigern, habe ich mich entschlossen diesem Forum beizutreten und im Ernstfall hier nachzufragen.

Ich komme nun zu folgendem Problem:

Ich habe vor einigen Wochen schon mit meinem Projekt angefangen und arbeite seitdem mit Canvases, Buttons usw.
Dafür benötige auch ein Event System, auch das habe ich und siehe da alles funktioniert.
Nun wollte ich ein wenig die Performance optimieren und habe gehört das ein Raycast Target besagte Performance kostet.
Ich deaktiviere also blind alle Raycast Targets und nichts funktioniert mehr(logisch). Danach habe ich in jedem Button das nötige
Image wieder mit dem Raycast Target ausgestattet und es hat auch alles super funktioniert. Nach weiteren Änderungen und
ein großen Umbau der Spielmechanik funktioniert aber mein UI nur noch zum Teil.
Die erste Ebene der Buttons funktioniert Problem los, alles danach nicht, trotz Raycast Target.

UI
  OpenPause(funktioniert)
  Pause
    Continue(funktioniert nicht)
    Exit(funktioniert nicht)

Was genau ist bei Raycast Target zu beachten oder hab ihr vielleicht eine genaue Idee was ich falsch mache.?

MfG

Alex

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Minuten schrieb DI3FL4MM3:

Um meine aktuelle Lernkurve ein wenig zu steigern, habe ich mich entschlossen diesem Forum beizutreten und im Ernstfall hier nachzufragen.

Nice! Hallo :)

vor 4 Minuten schrieb DI3FL4MM3:

Was genau ist bei Raycast Target zu beachten oder hab ihr vielleicht eine genaue Idee was ich falsch mache.?

Joa, wenn man mit einem Pointer (Maus oder Touch) damit interagieren will, muss das an sein, weil das Event System einen Raycast macht, um zu schauen, was du mit dem Pointer berührt hast. Wenn du übrigens nur mit Tastatur oder Gamepad durch das Menü navigierst, braucht's das auch nicht. Aber da kann man dann auch einfach ein eigenes EventSystem bauen, das gar nicht erst raycastet und hat die beste Performance-Ersparnis :)

Wenn ein Ding interagierbar ist und auch Raycast Target an hat, dann solltest du da auch draufklicken können. Wenn das nicht geht, ist es am wahrscheinlichsten, dass das Ding von etwas anderem verdeckt ist. Da du hier ein Pause-Menü hast, stellt sich auch die Frage, ob du die Zeit anhältst (Time.timeScale = 0). Das kann für UI auch manchmal schlecht sein, wenn man da nicht an ein paar Schrauben dreht.

Generell gilt übrigens, dass Performance nicht immer sofort optimiert werden muss. Klar, zum Lernen probiere alles mal aus. Aber es gibt so genannte "Premature Optimization". Das steht dafür, dass Arbeitszeit am Projekt unnötig verschwendet wird, um die Performance zu verbessern, obwohl diese von vornherein gar nicht schlecht war.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Leute,

Ich habe diese Problem teilweise immer noch. Aus irgendeinem Grund reagiert das UI nicht wenn der Gameview im Editor eine bestimmte Größe hat. Bei geringster Änderung funktioniert wieder alles einwandfrei. Das Problem an der Sache ist, bei meinem Tablet kann ich diesen View nicht ändern, genauso wenig bei meinem xiaomi redmi 8(hier funktionieren lediglich die scrollviews nicht). Bei meine Pixel 3a funktioniert alles einwandfrei.

LG Alex

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, 

ich denke durch ändern der Größe, ändert sich auch die Größe bzw. die Position von Elementen die deine Button verdecken.

Hatte ich auch mal. Hab ein Image zum teil Transparent gehabt aber nicht Skalliert. Hab meine Buttons zwar gesehen aber nur

bei größeren View klicken können. Schalte doch einfach alle Image und Panels ab und schau welches stört.

Panels kann man mit Raycast Target abschalten durchklickbar machen.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

@DI3FL4MM3 Im Zweifelsfall dein UI nochmal neu bauen. Durch das an- und ausschalten der Raycast Target-Eigenschaft bleibt eigentlich nichts dauerhaft anders als vorher. Vorher hat's ja auch funktioniert. Wenn man nicht rausfinden kann, was sich geändert hat, muss man halt neu bauen.

Und generell sollte man sich in Versionskontrolle einarbeiten. Damit kannst du verschiedene Versionen deines Codes vergleichen und dann die Änderungen finden, nach denen es plötzlich nicht mehr geklappt hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 42 Minuten schrieb Sascha:

Und generell sollte man sich in Versionskontrolle einarbeiten. Damit kannst du verschiedene Versionen deines Codes vergleichen und dann die Änderungen finden, nach denen es plötzlich nicht mehr geklappt hat.

Das Thema ist mir tatsächlich nicht unbekannt aber in Unity habe ich mich damit noch nicht auseinandergesetzt. Trotzdem Danke euch beiden. 👍

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...