Text im Textfeld ändern - Widget

  • Hallo,


    wie kann ich den Inhalt von einem Textfeld ändern?


    kurze Beschreibung:
    Ich habe einen Button. Wenn ich auf ihn klicke soll der Text in einen Widget(Text field) von "default" auf "button gedrückt" ändern.


    Info:
    -Der Button funktioniert.
    -Eine Testausgabe via printString funktioniert.
    -Casten von Typ String auf Typ Text funktioniert.
    -SetText hat keine Auswirkung.
    -genutztes Element: (Widget)text field


    Danke für die Hilfe.


    MfG Felix

  • Möchtest du den Button per Blueprint oder c++ steuern ?
    Habe hier auf der Arbeit grad kein UE4 aber wenn du bis heute Abend noch keine Lösung bekommen hast, kann ich dir gerne nen Screen schicken wie man das umsetzt.

  • Tjo wenn ich es richtig verstanden habe, dann sehe ich da kein Problem


    Button ins Widget, Text Feld drauf (Untergeordnet), OnClick event erstellt Set Text drauf... läuft.


    Hab ich was falsch verstanden ?


    Hier das Bild

  • Hi Harlyk,
    danke für die Hilfe, das hat geklappt. Und Du hast es richtig verstanden.
    Jetzt kommt Stufe 2 des Vorhabens.


    Momentan ist es schon möglich das ich mit create Witdget(diesen Button) mehrere Buttons in einer Vertical Box packen kann.
    Kann ich den Button mit Informationen belegen das ich beim klicken auf den Button wieder Infos rausbekomme? Also Infos über das Item


    Oder muss man da anders ran gehen?


    Edit:
    Vielleicht ist das genau das was ich suche.
    https://wiki.unrealengine.com/…uttons_From_Dynamic_Array



    MfG Felix

  • Also ich habe jetzt ungefähr drei mal gelesen was du geschrieben hast ^^


    Dein Link habe ich mir auch angesehen und denke es geht in die Richtung was du suchst.
    Jedoch kommt mir das was dort gepostet wird ca. 300% schwieriger vor als es überhaupt sein muss.


    Es ist schon spaßig, jedes mal wenn ich mich bezüglich Blueprints umsehe finde ich Beispiele die teileweise so extrem sind das die Lösungen über "Seiten"gehen.
    Ich habe echt schon richtig Kranke Blueprints gesehen aber jedes BP was ich bisher gebaut habe ist absolut minimalistisch und meist gekapselt, ich frage mich manches mal wie es überhaupt möglich ist solche
    riesen Blueprints zu erstellen die am Ende überhaupt noch funktionieren.


    Aber genug dazu:
    Ich denke es wäre einfacher Bemmi wenn ich wüsste was du umsetzen möchtest um zu erahnen ob der Weg den du einschlägst überhaupt richtig ist, aktuell kann ich nur auf das reagieren was du fragst.


    Klar kann man Buttons zur Laufzeit erstellen und diese mit Daten füllen die wieder ausgegeben werden.
    Wichtig hierbei ist, wieviele Daten bzw. Button es denn sein müssen und was du damit vor hast.


    Es gibt Arrays die mal füllen kann, diese sind aber von der Handhabung teilweise unpraktisch.
    Dann gibt es Listen, die schon praktischer sind.
    Man kann auch Textdateien oder Datenbanken verwenden kommt aber darauf an was und wie viel man von den Kram brauch.
    Auch stellt sich die Frage ob diese Buttons überhaupt zur Laufzeit generiert werden müssen oder ob man sie nicht vorbereiten kann.


    Ich habe bisher noch keine Erfahrungen mit externen Daten und der UE4 errungen da ich bisher keine Verwendung dafür hatte.
    Da ich sowas aber beruflich mache ist es denke ich mal ein leichtes zu erfahren was notwendig ist eine Datenbankanbindung zu realisieren....oder ähnliches.


    Du kannst ja gerne deinen Link mal antesten, sofern du weitere Infos brauchst sag bescheid.
    PS: Und zu deiner Frage, ja klar ist sowas möglich ;)

  • Hi,
    ja da gebe ich Dir recht mit den Blueprints. Bevor ich das Vorhaben gestartet habe mich mit der Unreal zu beschäftigen habe ich mir auch viele Sachen angeschaut. Wie was zu realisieren ist, wie es umgesetzt ist und halt mit den Aufwand in Unity verglichen. Bei manchen Sachen war ich echt geschockt und diese haben mich auch fast vom Vorhaben abgebracht mal die Unreal zu nutzen.


    Aber wieder zum Thema :D


    Okay ich versuche es zu erklären was ich zum üben vorhabe. Bin leider nicht so der Erklärbär. Vielleicht ist es ja der richtige Ansatz wie ich begonnen habe. Vielleicht aber auch nicht.


    Vorhaben(siehe Bild, einiges geht schon):
    Ein Inventar mit einer maximalen Anzahl an Slots für Items die aufnehmbar sind(funktioniert, auch ohne UI).


    Umsetzung(bis jetzt, grob beschrieben):
    Das Item:
    Ein Blueprint mit variablen wie: "Name", "Image". Das Blueprint nennt sich Pickup(wie einfallsreich).
    Die Kinder also Childblueprints(rote und grüne Dose), mit einem Bild("Image") was später ausgelesen wird und den Button untergeordnet ist(siehe Bild, funktioniert).


    "Pickup" Aufnahme:
    1. Linecast trifft Objekt mit Collider(funktioniert).
    2. Beim drücken von "E" (was die Aufnahme aktiviert) prüfen ob vom Type "Pickup"(funktioniert).
    3. Stecke mir das Item in meine Inventarliste wenn sie nicht voll ist(funktioniert)
    Jetzt kommt der Teil wo ich denke mal falsch oder von Unity geprägt bin. Was nicht negativ gemeint ist.
    Info: Es existiert in meiner UI ein Button, auch als Variable. Dieser hat ein event OnClick welcher einen Text überschreibt(funktioniert).
    4. Dieser wird mit Create widget erzeugt. Das Bild aus dem Pickup geholt und untergeordnet und in eine Vertical Box gesteckt(funktioniert)


    Was nicht funktioniert, was mir beim aufschreiben vom Punkt 4 eventuell schon fast klar ist warum das nicht gehen kann, ist das überschreiben/ ändern vom Text. Aber das schaffe ich heute nicht mehr zu testen.


    Ich würde mich nochmals sehr über deine Hilfe freuen. Mache Dir da aber nicht so viel Aufwand. Ich bekomme da immer ein schlechtes Gewissen.
    Bis jetzt muss ich sagen das die Unreal Spaß macht und ich schon einige kleine Sachen zum Testen sehr leicht und schnell umsetzen konnte. Die Docu ist auch gut und man findet eigentlich auch viele Sachen im Allgemeinen.


    Falls die Infos nicht reichen, einfach nochmal schreiben.


    Danke nochmal ^^

  • Hey Bemmi,


    also zunächst denke nicht das diese mega Blueprints Standard sind in UE4 das sind sie nicht, ich denke eher das sowas durch Unwissenheit erzeugt wird. (Oder ich gehe an sowas anders ran)
    So einfach und schnell wie man mit der UE4 arbeiten kann, das habe ich bisher noch bei keiner anderen Engine kennen gelernt, meiner Meinung nach wird Unity niemals auch nur in die Nähe dieser Leistungsfähigkeit und Bedienung kommen.
    Was man aber auch sagen muss ist, das die UE4 eine deutlich längere Einarbeitung benötigt weil sie einfach ein viel weiteres Spektrum an Möglichkeiten besitzt. Bevor man also relativ effektiv mit UE4 arbeiten kann dauert das eine ganze Weile, ich muss auch zugeben das ich jetzt erst so langsam richtig in Fahrt komme, vor einigen Monaten war an solch eine Effektivität noch nicht zu denken, mittlerweile denke ich das ich fast alles relativ zügig umsetzen kann.
    Natürlich kenne ich noch nicht annähernd alles der UE4 aber ich habe verstanden wie sie funktioniert und das hilft ja bekanntlich gewaltig.



    So zurück zum Thema :)


    Ok wir sind schon mal einen Schritt weiter.
    Ich habe verstanden das es um ein Inventar geht, nur verstehe ich noch nicht ganz warum du einen Text überschreiben willst und warum du die Buttons erzeugst, wäre toll wenn du mir den Sinn dahinter erklären könntest.


    Wenn ich jetzt mal mutmaße, dann würde ich sagen du willst den ersten Buttontext mit den Namen des Items überschreiben ?
    Aber wenn du das machst, welche Funktion hat dann der Button ?
    Dann wäre noch die Erzeugung der Buttons, kann es sein das du die Buttons jedes mal neu erzeugst wenn du auf ein Item klickst ?


    Leider habe ich heute und morgen wenig Zeit zu helfen da ich abends unterwegs bin und nicht an die UE4 komme, ich kann also die nächsten 2 Tage nichts testen und dir Screens schicken.
    Ich kann aber versuchen es so zu erklären und passende Links zu finden, ansonsten kann ich Freitag wieder helfen.


    Allgemein würde ich Items so aufbauen, das alle nötigen Informationen in den Variablen innerhalb des Items sind (Objektorientiert sozusagen).
    Dann musst du immer nur auf das Item zugreifen und musst dir keine Gedanken machen wo du sonst die Infos findest.
    Wenn du den Text des Items dann auf den Button legen willst, geht das wie oben, nur mit den Unterschied, das du den Actor hinter dem Hitresult deines Linecasts in dein Item umcasten musst, damit du zugriff auf die Variablen hast.


    (Sry wenn ich die Befehle jetzt nicht 100% genau schreibe)
    Das sieht dann ungefähr so aus --- Hitresult under Mouse --- Hit break --- Hit Actor --- Cast to Pickup --- Get Pickupvariable Name -- Set Inventartext (Pickupname)
    Ist ein wenig blöd geschrieben aber hoffe du verstehst das ungefähr.


    Die Buttons wie Fallen lassen und was es sonst noch so gibt würde ich nicht immer erst erzeugen sondern fest in dein HUD einbauen, das macht es zunächst einfacher.
    Warum sich das leben schwer machen, wenn du die Buttons vorbelegst hast du immer ein qualifizierten Zugriff und was du nicht brauchst, das disablest du oder blendest es aus.


    Wenn dein Inventar geschlossen wird, wirst du sicherlich das Widget eh entladen, somit ist der Rest dann ja auch wieder clean.


    Falls ich hier in die falsche Richtung ruder, dann gib mir bitte mehr Infos.
    Vielleicht nicht was du hast oder was fehlt sondern was du am Ende erreichen willst, dann kann ich ja mal meinen Weg posten und du kannst dir dann ansehen welcher Weg sinnvoller ist, wenn du dich dann für eine Vorgehensweise entschieden hast, dann können wir das ja gerne Stück für Stück umsetzen.


    Ich habe nämlich das Gefühl das du es dir vielleicht grad selbst zu schwer machst.

  • Hi,
    okay scheinbar brauche ich doch mal einen Ansatz wie man das am besten lösen kann.
    Wie gesagt, es geht darum die items in meinem Inventar auch darzustellen. Wie das passiert spielt eigentlich nicht so die Rolle. Funktionieren muss es 8o


    Mal schauen, vielleicht finde ich noch eine gute Lösung.
    Momentan schaue ich mir das mal an. Das geht auch in die Richtung.


    http://www.tomlooman.com/tutor…tory-system-in-blueprint/


    Edit:
    Okay, der Link brachte nix neues. Hab mir jetzt aber eine Lösung entworfen. Mal schauen ob sie fruchtet. Ich geb bescheid.


    Hier etwas hilfreiches. Das zieh ich mir gerade rein. Das scheint exakt zu sein was ich möchte :thumbup:
    https://www.youtube.com/playli…O1gZo6zXTHGGSH8gxaA7a_zCt