Ankündigung

Einklappen
Keine Ankündigung bisher.

Objekt einer Klasse zuweisen

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Objekt einer Klasse zuweisen

    Hallo,


    ich möchte ein Objekt, einer Klasse zuweisen, damit auch deren duplikate, auf eine Nachricht reagieren.
    Spricht; ich möchte das Objekt einer Klasse zuweisen und alle Objekte mit der gleichen Klasse, über die Klasse abrufen können, um eine prop bei allen zu ändern.

    Gruß kia

    ​​​​​

  • #2
    Wenn du ein Objekt instanziierst, gehört es bereits zu einer Klasse. Eine andere Klasse auf die das Objekt anzusprechen ist, muss daher eine Unterklasse dieser Klasse sein. So erbt es Funktionen auch aus diesen Klassen. Dass man ein Objekt nachträglich einer völlig anderen Klasse zuweisen kann, wäre mir neu. Du musst da schon die Klassenhierarchie beachten. Ich bin aber sicherlich kein Experte für OOP und mal gar nicht für Python.

    Gut wäre es, wenn du ein Beispiel geben würdest, um welches Objekt und Klasse es geht und in welcher Klasse du es gern hättest bzw. was du damit tun möchtest. Vielleicht kennt jemand einen eleganten Weg und erklärt dir, wie das geht. Python ist sehr mächtig. Da sollte eigentlich alles möglich sein.
    Der aktuelle Monatswettbewerb. Bitte teilnehmen!

    Kommentar


    • #3
      Wenn ich ein Objekt mehr mals benutze bzw. Verlinke und oder spawne, bekommt jedes eine eigene Nummer, so das sicherlich nicht jedes eine Nachricht bekommt, nur weil es den gleichen Namen hat.
      ziel ist es, bei allen gleichzeitig eine prop zu ändern,...
      z.b. die prop ist 1, es passiert etwas zum Beispiel es wird eine taste gedrückt und die prop soll auch in anderen Szenen geändert werden und es soll sich auch merken, das die prop jetzt 0 ist.
      so lange die prop 0 ist, passiert etwas anderes, als wenn die prop 1 ist.
      evt. Braucht man dazu auch eine overlay-Szene, mit einem empty, das das ganze steuert.

      Kommentar


      • #4
        Und mit Messages gehst nicht weil ... ?

        Kommentar


        • #5
          Zitat von Kia Beitrag anzeigen
          ...
          Du musst die einzelnen Objekte direkt ansprechen können. Beim Skripting hast du dann die Properties in einem Array und kannst sie beliebig durchiterieren und verändern. Du hast jetzt auch wieder kein konkretes Beispiel genannt. So wird es schwer dir zu helfen.
          Der aktuelle Monatswettbewerb. Bitte teilnehmen!

          Kommentar


          • #6
            Um Arbeit zu sparen, verwende ich einige Objekte mehrmals,... und verlinke sie, um sie dann mit empty's an verschiedenen Stellen hinzuzufügen.
            um während des Spiels die Grafik zu ändern, würde ich mit den empty's andere Objekte hinzufügen und die vorherigen löschen.
            ich habe es noch nicht ausprobiert, aber ich halte es für möglich, das sich nicht alle Objekte angesprochen fühlen, nur weil sie den gleichen Namen haben. Es ist möglich das nur die Objekte angesprochen werden, die zuletzt hinzugefügt wurden, wegen unterschiedlicher Referenz-Nummern.
            theoretisch könnte ich das auch über eine taste lösen, auf die alle reagieren,...

            alles in allem hänge ich noch ein bisschen am Problem, das es sich die Änderung auch merken muss,... sprich: die entsprechende prop speichern und später laden.


            Sprich: es hängt zum Teil immer noch am gleichen, wie hier;
            https://blendpolis.de/forum/technik/...wechsel-merken

            Gruß kia

            Kommentar


            • #7
              Das Problem ist nicht neu. Objekte erstellt man dynamisch und verwaltet sie in einem multidimensionalem Array, wo man dann auch gleich die Properties beisammen hat. Jedes Objekt braucht einen Namen oder einen festen Index über den man es ansprechen kann. Du könntest das wohl auch über den Nodetree machen. Objekte -> Empty -> Child. Aber da du scheinbar auch dynamisch erstellst, solltest du das auch dynamisch ansprechen können. Da brauchst du keine Empties dazu.

              Um dir helfen zu können, müsste man aber mehr Info über den gesamten Prozess haben. Da quält sich aber jeder Programmierer durch. Ist eine Stilfrage, wie man das handhabt. Wichtig ist es, die Logik hinter der Verwaltung deiner Objekte zu erkennen. Dann kannst du sie auch direkt ansprechen. Also Object.001, Object.002 usw. Da kannst du ja auch eine Methode für das Benennen beim Erstellen festlegen.
              Der aktuelle Monatswettbewerb. Bitte teilnehmen!

              Kommentar


              • #8
                Okay. ich habe Messag ausprobiert und es funktioniert.
                Sorry.
                Ich wage mich demnächst noch mal an das Speicher-Skripte und versuche das hin zu bekommen.

                Gruß Kia

                Ps. Dankeschön, an euch alle.

                Kommentar


                • #9
                  Das Problem ist aber, das wen ich eine Overlay-Szene starte, in der ich das ganze speichere und dann Die Szene hin und her wechsle, wird doch die gleiche Szene nochmal hinzugefügt.
                  Also brauch ich zumindest das Speicher-Skripte oder weiß jemand eine bessere Idee?

                  Kommentar


                  • #10
                    Na ja, du willst deine Objekt-Kopien dynamisch erstellen und agieren lassen. Da wirst du um eine Speicherung von Daten nicht herum kommen. Das geht nur mit Python.
                    Der aktuelle Monatswettbewerb. Bitte teilnehmen!

                    Kommentar


                    • #11
                      Overlay-Szene nur einmal beim Spielstart erzeugen. Also nicht die Overlay-Szene in der Szene erstellen.

                      Kommentar


                      • #12
                        Wie mache ich das am klügsten?
                        Szene1 starten, in dieser Szene Overlay-Szene und
                        Szene2 starten, und dann Szene1 beenden und ab da Szene1 nicht mehr starten.
                        wie mache ich das, das es beim nächsten starten des Spiels nicht mit Szene1 startet? Funktioniert das mit speicher-Scripte? Brauche ich davor noch eine Szene0 um zu entscheiden, ob Szene1 starten soll, oder geladen werden soll oder regelt man das lieber dadurch, das der Spieler entscheidet, ob er ein neues Spiel spielen möchte oder nicht?

                        Gruß kia

                        Kommentar


                        • #13
                          Warum legst Du die Daten nicht einfach in einem Pythonobjekt ab (z.B. einem Modul)?

                          Kommentar


                          • #14
                            Zitat von Monster Beitrag anzeigen
                            Warum legst Du die Daten nicht einfach in einem Pythonobjekt ab (z.B. einem Modul)?
                            Weil ich nicht weiss, wie das geht und ich gehofft habe, das es auch ohne geht.

                            Gruß kia

                            Kommentar


                            • #15
                              Zitat von Kia Beitrag anzeigen
                              Wie mache ich das am klügsten?
                              Du brauchst nur eine leere Initialisierungsszene.
                              Ich habe dir eine Beispieldatei gemacht.
                              Angehängte Dateien

                              Kommentar


                              • Kia
                                Kia kommentierte
                                Kommentar bearbeiten
                                Dankeschön
                            Lädt...
                            X
                            Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung