Jump to content
Unity Insider Forum

Singular

Members
  • Posts

    166
  • Joined

  • Last visited

  • Days Won

    1

Singular last won the day on August 2 2021

Singular had the most liked content!

About Singular

  • Birthday 12/08/1987

Profile Information

  • Gender
    Male
  • Location
    Königswinter

Recent Profile Visitors

490 profile views

Singular's Achievements

Advanced Member

Advanced Member (3/3)

2

Reputation

  1. Jetzt sehe ich was... Du versuchst in einer foreach Schleife ein Objekt aus der selben Liste zu löschen, die du gerade durch gehst. Bekommst du da keine Fehlermeldung? Wenn nicht, ist der scheinbar immer im if-Fall und führt das else nie durch. Aber ich verstehe auch nicht, warum du durch die Liste durch gehen musst. Warum rufst du nicht einfach eine Methode "SellItem" auf, die dann selber prüft: Habe ich das Objekt in der Liste? --> Wenn Ja : Entferne es aus der Liste und der Spieler bekommt Geld. --> Wenn Nein: Wirf den Spieler zurück, dass er nichts hat was er verkaufen kann.
  2. Ich steige durch den Code noch nicht ganz durch glaube ich. Aber ich sehe nichts, was darauf hindeutet, dass deine Liste überhaupt aktualisiert wird nachdem das Objekt aus der Liste geflogen ist. Was macht die Methode Anzeige? Wenn die dafür verantwortlich ist, dass deine UI aktualisiert werden soll, wäre die Frage was da passiert.
  3. Ich weiß auch nicht wer das war Gut, dass nicht allzuviele an dem Projekt arbeiten und ich den schuldigen bestimmt bald finde Danke dir nochmal. Vor allem einfach mal OnEnable/OnDiable zu verwenden. Wie gesagt war mir nicht bewusst, dass es die Methoden gibt. Aber wahrscheinlich gibt es so ziemlich für alles irgendwelche Methoden um so etwas abzufragen. Ich habe mich eben auf dem Heimweg von der Arbeit gefragt ob es möglich ist, diese Methoden dazu zu verwenden eine Animation abzuspielen. Also, dass das Menü dann zugeklappt wird statt dass es einfach verschwinden o.Ä. Problem ist dann aber, wenn die Methode ausgeführt wird das Objekt schon weg ist oder gibt es da möglichkeiten?
  4. Okay "Added / Remove an non-persistent Listener to / from the UnityEvent" Das wird es wohl sein. Wenn ich "Debug.Log(TESTBUTTON.onClick.GetPersistentEventCount());" hinzufüge bekomme ich auch 1 zurück. Was ist denn eine persistente Funktion? Edit: Okay das Hinzufügen klappt, doch. Es wird nur im Inspector nicht angezeigt. Ich denke dann weiß ich was ich zu tun habe... ich darf das nicht Insprector zuweisen sondern muss das über den Code machen, weil ich dann die Methoden, die ich hinterlegt habe auch wieder raus bekomme. Richtig?
  5. Ich habe zu diesem Thema leider doch nochmal eine Frage: Was mache ich hier Falsch, Ich würde behaupten, dass hier eigentlich alle hinterlegten Events gelöscht werden und das Fenster im Button leer ist: private void Start() { TESTBUTTON.onClick.RemoveAllListeners(); } Es passiert aber gar nichts. Die Hinterlegten Events sind immernoch da. Ich bekomme aber auch keine Fehlermeldung. Genauso geht es anders Herum aber auch nicht: public void Start() { TESTBUTTON.onClick.AddListener(() => OpenKontinent(0)); } //oder public void Start() { TESTBUTTON.onClick.AddListener(() => GetComponent<MenuManger>().OpenKontinent(0)); } Auch hier passiert nichts. Es wird nichts hinzugefügt oder weggenommen.
  6. Schön zu sehen, dass der Fehler meist irgendwo zwischen Bürostuhl und Tastatur zu finden ist... WER HAT DIESEN QUARK GESCHRIEBEN???? Ich kann das nicht gewesen sein! Fehler gefunden. Irendein vollhorst hat an anderer Stelle das Canvas wieder aufgehen lassen.
  7. Du hast recht... Das Canvas wird wieder an geschaltet... Jetzt muss ich nur noch heraus finden von wo... Die Idee war gut. Ich wusste nciht, dass es Methoden für OnEnable/Disable gibt. Danke dir. Achso und ja ich hatte Probleme mit dem SetActive oder enable = ... Im laufe des Problems habe ich dann auch irgendwann gemerkt, dass mit enabled = false nur die Komponente ausgeschaltet wird. Danke dir.
  8. Neuer Tag neues Glück... ich habe jetzt nochmal alles in dem Bereich neu gemacht, also auch das Canvas gelöscht und ein neues Gesetzt. Es hat EINMAL geklappt... beim zweiten Mal nicht mehr. Jetzt habe ich nochmal ein neues Canvas erstellt und herausgezogen aus dem Menu also so, dass es kein untermenü des Hauptmenüs mehr ist... Selbes Problem. Dann habe ich jetzt nochmal den Code dahingehend geändert, dass alles Geschlossen wird also meine CloseAll() Methode, die jedes untermenü und auch das Hauptmenü schließt. Jetzt komme ich hier an eine Lächerlichkeit, dass es schon fast nicht mehr zu überbieten ist: Alles wird geschlossen. Nur dieses eine Canvas wird nicht geschlossen. Der Button geht weiterhin. Nur über das Gebäude geht es nicht. Ich weiß echt nicht mehr was ich machen soll.
  9. Nächster Test. Hier wird von beiden der Text abgeschaltet (jeweils die Komponente und das GameObject) also das, was ich auch erwarten würde.
  10. Er kennt lediglich diese 4 Canvasas (🤔 Singular:Canvas Plural: Canvasas, Kann was mehr... ? ) Und die soll er allessammt schließen. (noch ein bischen mehr steckt dahinter aber das würde jetzt den Rahmen sprengen) Der Button macht das ja auch. Nur nicht das Gebäude mit dieser einen Methode. Jetzt habe ich die Methode mal erweitert um zu überprüfen, was er macht. Es wird tatsächtlich alles ausgeführt bis auf das Canvas zu schließen. Also dieser Testtext den ich eingebunden habe, der wird auch aktualisiert. Der Button macht auch alles auch das Canvas schließen. Ist es einer Methode den wichtig von wo her sie aufgerufen wird oder kann ihr das nicht egal sein?
  11. Ich habe mal weiter probiert: Auch hier ist es das selbe Ergebnis. CloseAll() - schließt alle geöffneten Menüs und wirft mich zurück ins Spiel OpenPlanet(clickedPlanet) - öffnet den angeklickten Planeten und öffnet das entsprechende Menü. über den Knopf in Unity geht es, über das Menü des Gebäudes geht es nicht. In beiden fällen wird aber Debug.Log ausgegeben. Das hier ist übrigens die Methode des Gebäudes: Es gibt drei Buttons die jeweil 0, 1 oder 2 übergeben. Der Button den ich klicke übergibt 1. kontinent ist eine eigene Klasse ohne vererbung, jeder Planet hat bis zu 6 davon. Planet ist eine Klasse und erbt von Monobehaviour und mm ist der MenuManager in dem die Methode ChangeToTransportMenu() drin ist.
  12. Ja mit schließen meinte ich Disablen. Öffnen kann ich ausschließen, weil beide auf die selbe Methode zugreifen und die Methode keine weitere Methode o.ä. aufruft. Jeder Button hat auch nur eine einzige Aktion. Da ich dachte es könnte mal wieder der Falsche befehl sein, den ich genommen habe, habe ich beide also enabled = false und SetActive(false) sowohl einzeln als auch zusammen verwendet. Es gibt nur einen Verweis oben weil eine andere Methode auf diese Zugreift. Das andere ist der Button mit Zuweisung aus dem Inspektor. Der wird oben ja nicht angezeigt.
  13. Ich fühle mich gerade wieder zurück an den Anfang meiner Programmierfähigkeiten zurück geworfen und weiß nicht mehr woran es liegen könnte. Aber UIs sind echt nicht meine Stärke... Ich habe hier ein Canvas, was über zwei verschiedene Buttons abgeschaltet werden können soll. Es gibt einen einfach "Zurück" button, der das letzte geöffnete Menü schließen soll. Funktioniert auch so, wie es sol. Dann habe ich in meinem Spiel die möglichkeit Gebäude auf Bauplätze zu bauen und Gebäude auszuwählen... egal Eins dieser Gebäude soll (unter anderem) das Menü ebenfalls schließen und ruft im zuge dessen DIE SELBE METHODE auf. Also die Back() Methode. In diesem Fall geht es nicht. Die Back Methode schließt kein Variables Canvas oder ähnliches. Es ist immer das selbe Canvas was diese schließt (Weil ich keine Menütiefe mit 5018 untermenüs habe) Damit ich weiß, dass auch beide Funktionieren habe ich mir ein Debu.Log rein gesetzt. Beide rufen auch die Methode auf. Nur über die eine Seite wird das Canvas nicht geschlossen. Der Unterschied (und der wird eben diesen machen denke ich mal) liegt in den Buttons. Der richtige "Zurück" Button ist ein Button von Unity, den ich an seinen Platz gesetzt und mit funktion versehen habe. Der andere ruft eine Funktion des Gebäudes auf welche (wie gesagt, unter anderem) das Menü schließen soll. Dieses Gebäude ist eine von mir erstellte Klasse, die nicht von MonoBehavior erbt aber zugriff auf meinen MenuManager bekommt und dort die Methode aufrufen soll. Was er auch tut (Debug.Log wird wie gewünscht angezeigt) aber das Menü wird nicht geschlossen... Ich weiß nicht ob das alles so verständlich war... ansonsten gerne nochmal nachfragen Danke euch.
  14. Ahhh jetzt hats klick gemacht. "Zur Laufzeit eine neue Methode erzeugen" hatte ich vorher nicht verstanden. Wusste nicht mal dass das geht Perfekt danke dir. Ja, das war das was mir gefehlt hat. Ich hatte keine using directiv mit drin für das Action. Danke dir.
×
×
  • Create New...