Geometry von Widget to Widget

  • Hallo und einen wunderschönen Tag,


    ich hätte da eine Frage, bei der Ihr mir vielleicht helfen könnt. Ich würde gerne in einem Widget mithilfe des Events "Event On Mouse Enter" auf ein anders Widget, deren Event "Event On Mouse Enter" zugreifen. Ziel des Ganzen soll es sein, dass ich im ersten Widget mit der Maus über ein Widget, welches mithilfe der Funktion create Widget eingefügt wird zugreifen kann.

    Leider habe ich keine Ahnung wie ich dies bewerkstelligen kann. Habe vorerst im zweiten Widget eine Variable(geometry) erstellt, die ich dort mit dem Event verknüpft habe.

    Daraufhin versuchte ich im ersten Widget, aus der ReturnValue des "CreateWidget-Node" ein Set dieser Variablen mit der Geometry des Events des ersten Widget zu verbinden, hjedoch gibt das System mir eine Warnung aus, dass: "The property associated with"Name der Variablen" could not be found in "Name des ersten Widgets". Hierzu porste ich einen Screenshot.

    Danke für euer Interesse und ich wünsche euch eine schöne, warme Woche und viel Erfolg. Wird schon werden. :)

  • Wenn du ein Tooltip-Widget erzeugen möchtest wenn du mit der Maus über einem Slot bist, dann mache das Maus-Event in deinem Slot-Widget.


    Wenn du den Slots beim erstellen Werte geben möchtest mache das oben im Loop bevor du das Widget dem Grid hinzufügst.


    Zu deinem BP

    Wenn das MausEvent ausgelöst wird ist der Loop schon durch und du bekommst kein Slot mehr. Du müsstest dir das richtige Widget aus dem Grid holen um darauf zugreifen zu können.

  • Wenn du ein Tooltip-Widget erzeugen möchtest wenn du mit der Maus über einem Slot bist, dann mache das Maus-Event in deinem Slot-Widget.

    Es geht auch ohne Maus-Event, indem man den Button im Slot-Widget anwählt und dann in die Details geht und dort Bind drückt:


    Danach öffnet sich ein Graph, mit der Bind-Function, wo man nur noch das machen muss:


    Wenn du mit der Maus über deinen Iventory-Slot gehst, wird dann automatisch das Tooltip angezeigt ^^

  • Danke für den Tipp, DarkFaces und ButterFlyGames

    . Hab versucht das so gut wie möglich umzusetzen. Nun funktioniert es zwar, dass er mir den Namen und die Beschreibung angibt, jedoch verschwindet das erste Item, welches ich aufnehme im Nirwana(nur das Thumbnail), er zeigt mir jedoch noch deren Beschreibung an, wenn ich über das Bildchen mit der Maus fahre und zwar sobald ich ein zweites Item aufgenommen habe, immer die Beschreibung des ersten Items bei jedem Bildchen der Itemspalte, egal ob da ein Item drinnen ist oder nicht. Ich poste einfach mal wieder ein paar Screenshots und hoffe auf Anregungen. Schönen Tag euch allen und gutes Gelingen

  • MacArmand

    Du holst dir den Index vom Loop. Das funktioniert so nicht. Das Event-Construct wird ausgeführt wenn das Widget erstellt wird.

    Wenn du es auf dem Bildschirm siehst kommst du nicht mehr an den Index.


    Warum möchtest du das unbedingt alles in einem BP machen? Besser ist wenn jedes Widget seine eigene Logik hat.


    Geloscht

    Kann man auch machen.

    Eventgesteuert ist aber besser da Bind in jedem Frame aufgerufen wird und bei vielen Slots kann das ordentlich Leistung kosten.

    https://docs.unrealengine.com/…s/UMG/HowTo/EventBasedUI/

  • Wenn ich wüsste, wie ich das könnte, würde ich es machen. :)

    Ich habe nie programmieren gelernt. Ist mehr so ein Herantasten und Ausprobieren bei mir. Learning by doing.

    Wenn du Anregungen hättest, wie ich das machen könnte, wäre ich dir sehr verbunden.

    Der zweite Screenshot von meinem vorherigen Post ist aus dem dritten Widget(Name, Beschreibung) kein Thumbnail.

    Leider weiß ich nicht, wie ich an den Namen und die Description der Refreshfunktion des zweiten Blueprints(Thumbnail, Slot) für das dritte Widget komme. Da sich dort ja der Slotcontent je nach Item ändert bräuchte ich doch von dort eine Verbindung zum dritten Widget, oder? Habe es mit Casten probiert, jedoch kann ich ja nichts ins Object des Cast schieben, bzw. weiß nicht was.

    Danke

  • so das letzte was ich habe.

    Widget 1(Mainwidget wo alles zusammengeführt wird):

    Widget2(Slotwidget für Thumbnail und die Slots)

    Widget3(Tooltipwidget für Name und Beschreibung)


    Bitte, bitte helft mir. Ich habe keine Ahnung mehr was ich machen soll. Ich bekomme einfach nicht den Namen und die Beschreibung des entsprechenden Slots in mein Tooltipwidget. Entweder ich schaffe es, dass er mir gar keinen Namen zeigt, oder aber immer nur vom ersten Item, welches mein Charakter aufnimmt. Bitte, bitte :__ .

  • Ist das Slotttp ne Referenz zum Tooltip?


    Dann könntest es auch direkt so machen:


    Dann einfach im Inventory-Slot-Widget, die Referenz vom Tooltip nehmen und dort deine MouseEnter/MouseLeave Events ausführen (ohne das CreateWidget, da das ja schon vorhanden ist) ^^


    Wobei wie DarkFaces sagte, die beiden Events sowieso im Slot-Widget ausgeführt werden sollten und nicht im Inventory-Widget, da du derzeit immer nur die letzte ID ausm Loop nimmst und nicht die was der Item-Slot richtig hat (Slotindex).


    Deine ganzen Werte kannst ja aus dem Slotcontent Struct holen, welches ebenfalls bereits im Slot-Widget existiert und alles richtige drin sein sollte...

  • Danke ButterFlyGames für den Tipp, funkt super, bis auf ein kleines Anzeigenproblemchen. Sobald ich von dem Thumbnail des Slotwidget mit der Maus fahre, verschwindet der Tooltipwidget. Das soll eh so sein. Jedoch wenn ich wieder über dasselbe Thumbnail fahre, erscheint keine Info und wenn ich über ein anderes Item fahre, dann erscheint zwar der Name und Beschreibung jedoch um einen Slot nach unten versetzt. ebenfalls zeigt er mir nicht mehr das erste Item an, dass ich aufhebe. Hier poste ich das letzte was ich gemacht habe.

    Das Mainwidget:

    Und das Slotwidget mit Refreshfunktion:

    Sonst funktioniert alles einwandfrei. Danke ButterFly

  • Und das Slotwidget mit Refreshfunktion:

    Verlink mal das "SetVisibility", statt dem "Remove".

    Wenn du das Widget entfernst und nicht mehr hinzufügst, kannst es auch nicht aufrufen ^^


    Wenn das ganze per Tick aktualisiert wird, kannst auch direkt das Bind machen, was ich weiter oben gezeigt hab...

    Besser wäre es, wenn die ganze Logik hinter dem Tick, beim "MouseEnter" verlinkt wäre.

  • Habe nun das SetVisibility statt dem Remove benutzt. Dasselbe Problem, nur dass das Tooltipwidget je weiter ich nach unten gehe im Slot um einen (bis ich sehe nicht das Ende) Slots nach unten versetzt auftaucht. Ebenso taucht das erste aufgenommene Item nicht auf. Habe das Refresh hinter den Mouseenter eingefügt. Scheint irgendwie flüssiger zu laufen.

  • Habe nun ein screenshot des Widget im Game:

    Die linke Spalte ist das Slotwidget. Der rechte Bereich sollte für die Beschreibung des jeweiligen Items zur Verfügung stehen. Ich befürchte, dass ich ein Remove brauchen werde, da er mir ansonsten die Beschreibung immer um ein Feld weiter nach unten versetzt. Da stellt sich mir nur die Frage wie ich das Tooltipwidget immer wieder ausführen kann. Im Slotwidget kann ich es nicht createn muss es aber removen, kann es aber auch nicht im Mainwidget createn da mir da die Ausführung Event ONMouseEnter fehlt.
    Ich glaube langsam gebe ich es doch auf. :(

  • Tut mir leid. Keine Ahnung wie du das gemeint hast. Hab ein wenig herumprobiert aber keine Lösung gefunden. Wenn ich das Tooltipwidget remove, muss ich es auch wieder createn. Das kann ich aber nicht im Slotwidget, auch mit der Referenz. Da mir der Bezugspunkt fehlt, an welchem ich das Widget anhängen möchte.

  • Ich habe da eine allgemeine Vermutung. Wenn sich dein Problem darauf beruft, dass sich das immer verschiebt bei jedem neuen Aufruf, dann vermute ich da mal, dass deine Variable Number of Slots eventuell jedes Mal einen Wert hinzufügt, ohne vorher auf 0 gestellt zu werden.


    Wobei ich mich eh frage, wozu du diese Variable brauchst und nicht ein For Each Loop verwendest.

  • Weil Du etwas von Maus-Event und Tooltip geschrieben hast bin ich von einem klassischen Tooltip ausgegangen der an der Mausposition erstellt wird.


    So wie das jetzt aussieht würde es wohl mehr Sinn machen das in einem Widget zu machen und beim Mouseover die gewünschte Visibility für den hinteren Bereich zu setzen.

  • Also die visibilty des Gridpanels. KLingt gut, versuch ich gleichmal. Erfolglos. Bekomme die Fehlermeldung: "Accessed none trying read property Inventorywindow" bzw. "Accessed none trying to read property CallFunc_FinishSpawningActor_ReturnValue".