Jump to content
Unity Insider Forum

Sanban

Members
  • Content Count

    6
  • Joined

  • Last visited

  • Days Won

    1

Sanban last won the day on March 13

Sanban had the most liked content!

Community Reputation

1 Neutral

About Sanban

  • Rank
    Newbie
  1. Hallo. Ich schreibe gerade an einem Editor Tool. Dort möchte ich diverse Personen anlegen. Die Daten befinden sich alle in einem Scriptable Object. Hier sind Listen von verschiedenen Personentypen. Diese Personentypen haben jeweils Variablen von diversen Informationstypen - so gibt es beispielweise eine List<MainPerson> und in dieser befindet sich eine public PersonalInformation personalInfo; Um später die Personen im Editor aus zu wählen möchte ich für jede Person einen Button an legen um mir so die jeweiligen Daten der einzelnen Person zu holen. Momentan bekomme ich jedoch beim Adden einen NullReferen Error. Dieser lässt sich auf den Text des Buttons zurückführen. if (GUILayout.Button(dbObject.MainP[i].PersonalInfo.FirstName + " " + dbObject.MainP[i].PersonalInfo.LastName)) { //code } Dort hole ich mir von der jeweiligen Person den Vor- und Nachnamen. Dieser befindet sich jeweils in der PersonalInfo. Mir ist jedoch aufgefallen, adde ich eine neue Person über den Inspector des Scriptable Objects, so wird diese Person im Tool problemlos geladen. Auch wenn die Felder zunächst leer sind. Zudem ist mir aufgefallen, wenn ich über meinen Add Button eine Person hinzufügen möchte und dabei im Hintergrund in der Engine das Scriptable Object angewählt habe, funktioniert dies auch problemlos. Der Error kommt nur, wenn ich versuche ein neues Objekt über das Tool zu adden, ohne im Hintergrund das Scriptable Object angewählt zu haben. Hier nochmal mein Add Button: //new person if(GUILayout.Button("+")) { switch(PeopleTab) { case 0: dbObject.MainP.Add(new MainPerson()); break; case 1: //other person type break; case 2: //other person type break; } } Hat jemand vielleicht eine Idee woran das liegen kann? - Ich habe testweise schon mal eine if um den oberen code gebaut die abfragt, dass dbObject.MainP.PersonalInfo != null ist. Dadurch bekomme ich zwar keinen Error, jedoch erscheint auch kein Button. Scheint also etwas damit zutun zu haben. Ich komme aber einfach nicht drauf wie ich es fixen kann Gruß
  2. Danke, deine Antwort hat mir sehr weiter geholfen. Ich bin davon ausgegangen das wenn Elemente einmal erstellt wurden auch bleiben like Instantiate.
  3. Danke für deine Antwort und sry für meine späte. Ich glaube wir reden etwas an einander vorbei. das Popup soll nie ausgeblendet werden. Um vielleicht mal etwas aus zu holen was ich allgemein machen möchte: ich arbeite atm an einem MultilanguageTool. Das Popup soll die wahl der Sprache sein und unterhalb des Popups sollen Textfelder für jedes UI-Textfeld erscheinen, welches einen bestimmten Komponenten hat. Ich bin jetzt dazu übergangen mit die Objekte mit FindObjectsOfType zu holen. Nur mein aktuelles Problem ist das die Textfelder sekündlich neu erstellen werden (auch wenn nur so viele zu sehen sind wie es IDs gibt). Dies haut mir allerdings die Länge meiner data-List in die Höhe. Ich habe nun testweise eine if eingebaut um zu verhindern das die Liste permanent verlängert wird if(textFieldCount < texts.Length) { for (int i = 0; i < texts.Length; i++) { GUILayout.BeginHorizontal(); GUILayout.Label(texts[i].ID); Languages[index].data.Add(""); Languages[index].data[i] = GUILayout.TextField(Languages[index].data[i]); textFieldCount++; Debug.Log(Languages[index].data.Count); GUILayout.EndHorizontal(); } } Im Bezug auf die Data-List funktioniert das super. Es gibt 2 Objekte und die Data-List ist nun auch 2 lang. Nur werden mir allerdings jetzt meine TextFields nichtmehr angezeigt. An sich war dies auch vor ca einer halben Woche mein Problem als ich die TextFields noch per Buttonpress hinzufügen wollten. Das diese halt nichtmehr angezeigt werden sobald ich den bool auf false gesetzt hatte. Ich bin mir nur gerade nicht sicher wie ich es beheben kann das A meinste Liste nicht wieder ins unendliche erweitert und und B mir dennoch meine TextFields angezeigt werden.
  4. Danke erstmal für dein Beispiel. Dadurch konnte ich den Fehler finden. Nur möchte ich ja allerdings nicht das es immer auf true bleibt sondern das es nach dem das neue Objekt hinzugefügt wurde wieder auf false gesetzt wird. Ich möchte über den Button beliebig viele Objekte hinzufügen können. Ich sehe das das Problem das pressed = false; nach dem erstellen der Textfelder war. Nehm ich es raus erscheinen sie. Aber eben nur einmalig weil der bool ja danach nicht mehr auf false zurück gesetzt wird. Ich bin gerade etwas unsicher wo genau der bool dann wieder zurück gesetzt wird weil wenn ich ihn in der if am Ende lasse erscheinen die beiden Textfelder ja nicht.
  5. Anfänglich war der Code auch in OnGUI. Doch wenn ich dort auf den Button gedrückt habe sind keine Textfelder erschienen. Die Logs haben aber das setzten des bools auf true und anschließend wieder auf false zurück gegeben.
  6. Hallo. Ich bin noch recht neu im Thema Editor Window. Ich möchte über das drücken eines Buttons zwei neue Textfelder in meinem Editor Window "spawnen". Der Code sieht folgendermaßen aus: void OnGUI() { if(GUILayout.Button("Add new Item")) { pressed = true; Debug.Log(pressed); } index = EditorGUILayout.Popup("Language", index, options); } void Update() { if (pressed == true) { GUILayout.BeginHorizontal(); EditorGUILayout.TextField("Name"); EditorGUILayout.TextField("Name"); GUILayout.EndHorizontal(); pressed = false; Debug.Log(pressed); } } Nun bekomme ich beim drücken des Buttons folgenden Error: Gibt es hier vielleicht jemand der schonmal Erfahrung damit gemacht hat und mir weiter helfen könnte?
×
×
  • Create New...