

nordseekrabe
Members-
Posts
115 -
Joined
-
Last visited
-
Days Won
1
nordseekrabe last won the day on November 24 2019
nordseekrabe had the most liked content!
Recent Profile Visitors
1,506 profile views
nordseekrabe's Achievements

Advanced Member (3/3)
1
Reputation
-
Super, super, Sascha, diesen Fehler hätte ich niemals alleine gefunden. Jetzt läuft es wie geschmiert, und ich kann mich nächsten Aufgaben widmen. Gut, das es dieses Forum gibt. Dank an alle, die mir helfen wollten. Peter
-
P.S. Ergänzend: es fehlte die Objektzuweisung public GameObject Stadtbild; ActivatePicture Gesamtbild; in Start() Gesamtbild = GameObject.Find("Objektmanager").GetComponent<ActivatePicture>() in SceneActivate() for (var i=0; i< Gesamtbild.theStadt.Count; i++) Gesamtbild.theStadt[i].SetActive(false); Stadtbild.SetActive(true); Leider(natürlich) hat sich an der Fehlermeldung nichts geändert.
-
Deinem Hinweis folgend bezüglich 2x Script bzw. 2x List habe ich im InputfieldScript die "List(GameObject> _stadt" rausgenommen, stattdessen "public GameObject Gesamtbild" hinzugefügt und die Funktion "void SceneActivate()" angepasst: for (var i = 0; i < ActivatePicture.theStadt.Count; i++) { ActivatePicture.theStadt[i].SetActive(false); } Stadtbild.SetActive(true); Damit klappt alles bestens, leider nicht der Click auf "Nächster Bildteil", hier kommt die o.g. Fehlermeldung. Zu der Frage mit public und private: ist nicht das entscheidende, dass die List<GameObject> theStadt "public" ist, daher erscheinen doch die Elemente im Inspector, denen ich dann die 9 GameObjekte aus der Hierarchy zuweise? Wie Du oben richtig hingewiesen hast, können die Deklarationen (GameObject bildTeil0-8) wegfallen, was ich ja auch ohne Verlust gemacht habe. Sascha, genau, mit der Deklaration hatte ich tatsächlich neben den zugewiesenen Elementen noch weitere 9 Elemente in "theStadt" im Inspektor. Einen schönen, sonnigen Sonntag und besten Dank für die Hinweise wünscht Peter
-
Dein Hinweis verblüfft mich. Ist mir schon klar, dass ich da irgendwo einen Fehler eingebaut habe. Zu meinem Verständnis sollte ich mehr darstellen: In der Hierarchy befinden sich neben Main Camera, Eventsystem und einem Canvas (für Buttons, Panels, Inputfield) ein EmptyObject als Objektmanager, dem im Inspector das ActivatePictureScript und ein Stadt.Script (Beschreibungen der einzelnen Objekte) zugewiesen sind. Weiter gibt es in der Hierarchy ein EmptyObject, dem die 9 Teilbilder aus einem Slice des Hauptbildes als Children hinzugefügt sind. Diese Teilbilder werden per Hand in die 9 Elemente der theStadt aus ActivatePicture eingefügt. Das ist ein Szenenbild. Das zweite Script trägt die weiteren Funktionen (wie Beschreibung zeigen, nächste Szene aufrufen, Eingabe der vermuteten Lösung); ich füge es auch zur Sicherheit bei. Es ist dem InputField im Canvas zugewiesen. Die "befüllte Liste" ist im Objektmanager. Die Liste im InputFieldScript ist die Liste der verschieden Szenen = Städte; die Randomverteilung hierfür klappt. Zum Verständnis, wenn ich starte und "Button Beschreibung zeigen" drücke, erscheint (erwartungsgemäß) das komplette Bild mit der Beschreibung auf dem Panel. Wenn der "Nächste Szene-Button" gedrückt wird, wird die nächste (leere, keine Bildteile, die sind ja deaktiviert, natürlich mit den Canvas-Objekten) Szene aufgerufen. Nur beim Drücken des "Nächster Bildteil" kommt es zu beschriebener Fehlermeldung , jetzt solte ja nach Zufallsgenerator eines der 9 Bildteile aktiviert werden = erscheinen. Das Problem liegt meines Erachtens an der Random-Verteilung der 9 Bildteile aus Liste "theStadt" Danke für Deine Unterstützung, an dem Punkt ist für mich halt kein Weiterkommen. Schönen Abend und schönes Wochenende Peter InputFieldScript.cs
-
Völlig richtig, Zeile 51 wird benannt - im Augenblick der Fehlermeldung sind alle 9 Element im Inspektor unter Objektmanager.ActivatePicture aufgeführt. TeilKopie der Fehlermeldung: ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) (at <695d1cc93cca45069c528c15c9fdd749>:0) System.ThrowHelper.ThrowArgumentOutOfRangeException () (at <695d1cc93cca45069c528c15c9fdd749>:0) System.Collections.Generic.List`1[T].get_Item (System.Int32 index) (at <695d1cc93cca45069c528c15c9fdd749>:0) ActivatePicture.NaechstesTeilbild () (at Assets/Scripts/Wer kennt das schon/ActivatePicture.cs:51) danach kommen noch weitere Hinweise(Events, UI.Button, EventSystem aus UnityEngine). Eine weitere Stelle im Script, auch nicht in einer anderen Datei, wird nicht aufgeführt. Peter
-
Moin, Sascha, danke bestens für die klare und verständliche Analyse. Die Fehlermeldung ist unverändert. Ich füge lieber nochmals die jetzt veränderte Datei bei. Gruß Peter ActivatePicture.cs
-
Moin, muss mich nochmals melden, da ich bislang nicht weiter komme. Nach oben beschriebenen Ergänzungen ( GameObject bildTeil 0- 8 deklariert, theStadt.Add(bildTeil0-8) in Start() ausgeführt, wird ein Assign für "collectedOne" in Zeile " collectedOne.SetActive(true); " erwartet. CollectedOne ist doch ein durch Random ausgewählter Bildteil von theStadt. Wie und wo kann ich ein assign ausführen ? Oder bin ich da völlig daneben? Wie Sascha bemerkte, die Objekte (acht Bildelemente eines EmptyObjects in der Hierarchy) sind im Inspector unter Objektmanager(der "ActivatePicture enthält) zugewiesen. Mein Problem ist wohl, wie sage ich dem Programm, dass collectedOne eines der oben genannten Bildteile ist ? Sollte das aber nicht durch " GameObject collectedOne = theStadt[UnityEngine.Random.Range(0, theStadt.Count)];" geklärt sein. Bitte nochmals um Euren Rat, bin halt Laie und Anfänger. Gruß Peter
-
Besten Dank für die prompten Antworten. Die GameObjekte wurden korrekt zugewiesen. "Lewo" liegt wohl richtig, wenn er annimmt, dass die Liste eigentlich leer ist. Ich werde also zunächst 9 Gameobjekte (als jeweilige Bildteile) deklarieren; dann in Start() als Teil der Liste addieren. Ob es dann klappt ?? Unklar bleibt mir dennoch, warum der Code in einer früheren Unity-Version anstandslos funktionierte ??!! Einen schönen Abend wünsche ich und nochmals danke Peter
-
Moin, liebe Leser Habe vor wenigen Jahren mit Unity ein kleines "geschrieben", funktioniert ordentlich(Version 2019.2.8f1). Wollte dieses jetzt in ein neues Spiel als Teilaufgabe einbauen (Version 2020.3.19f1). Leider erhalte ich nun stets die Fehlermeldung "Index was outof range. Must be non-negative and less than the size of the collection". Ich nehme an, dass sich im EventSystem (oder anderswo) von Unity etwas wesentliches geändert hat, sodass man nicht einfach 1 zu1 den Code übertragen kann. Hat bitte jemand einen Tipp oder eine Lösung für mich. Alleine konnte ich das Problem nicht lösen. Besten Dank und viele Grüße von der Ostseeküste Peter ActivatePicture.cs
-
Super und tausendmal Dank, lieber malzbie. So prompt und souverän. Dann kann ich ja weiter werkeln und muss nicht immer in der Registry die Einträge löschen. Bis zum nächsten Mal alles Gute Peter
-
Moin, bin nach wie vor am "kämpfen" bei der Anfängerprogrammierung meines kleinen Spiels. Jetzt bin ich einer Frage begegnet, die ich mit lieber Bitte um Hilfe an Euch weitergeben will: Inzwischen kann ich die Spielstände ganz ordentlich mittels PlayerPrefs speichern und wieder laden. Laut Unity ist der Speicherort hierfür in HKCU\Software\ExampleCompany\ExampleProductName zu finden. Bei mir aber nicht (habe im Code keinen anderen Pfad formuliert). Habe dann den Speicherort gefunden: HKCU\Software\Unity\UnityEditor\DefaultCompany. Ist an sich kein Beinbruch, jetzt funktioniert aber nicht das "PlayerPrefs.DeleteAll()". Kann man das irgendwo korrigieren ? Vielen Dank und eine gute Woche weiterhin Peter
-
Kann gelöscht werden.
-
Moin, moin, habe mein funktionierendes Inventory umgestellt auf ein scrollierbares, seither erscheint im Inventory nur noch ein Bild(Icon) im ersten Slot. Das 2.Objekt wird aufgenommen und in der Szene verschwindet es, nur erfolgt keine Abbildung im Inventory. Was habe ich gelöscht oder verändert, dass das jetzt im neuen Inventory nicht mehr klappt ? Aufbau: InventoryCanvas mit InventoryUI-Script, Inventory=Image mit ScrollRect, Viewport=Image mit Mask, Content=Image mit GridLayoutGroup + ContentSizeFitter, ItemSlot=Image mit InventorySlot-Script(52x), Image (52x). Die Item.cs enthält lediglich public string itemName und public Sprite itemIcon. Die 3 anderen Scripts habe ich hochgeladen. Habe schon viel herumprobiert, finde den Fehler nicht. Bitte, kann jemand helfen. Gruß Nordseekrabbe (Peter) Inventory.cs InventorySlot.cs InventoryUI.cs
-
Moin, liebe Unity-Freunde, wieder einmal auf der Suche nach Anregungen und Tipps. Habe mich sehr ausführlich mit dem Thema beschäftigt: wie kann man in Unity von der Szene B aus die Eigenschaften eines Objekts der Szene A ändern ? Grundsätzlich scheint das wohl nicht möglich ? Ich habe für mich einen Umweg gefunden : Wenn ich die Szene (A), in der sich mein Objekt, von dem ich eine Eigenschaft ändern möchte, befindet, "additiv" zur Szene B, von der aus die Eigenschaft geändert werden soll, aufrufe, kann ich tatsächlich die Eigenschaft verändern. Jetzt das Problem: nun lösche ich die Ausgangsszene (Szene B, SceneManager.UnloadSceneAsync(Buildindex)) und aktiviere die Szene A, die ja in der Hierarchy vorhanden ist, mit SceneManager.SetActiveScene(scene) (Scene scene = SceneManager.GetSceneByName("Hobbyraum");), scheint alles zu klappen. Leider fehlt das Hintergrundbild der Szene (das ist ein GameObject mit SpriteRenderer und damit dem Bild der Szene). Wie kann ich das lösen ? Klingt ziemlich kompliziert und mancher mag fragen, was soll der Blödsinn: man stelle sich aber nur eine einfache Szene vor. Der Spieler muss in einem Kellerraum einen Hauptschalter umlegen, damit in einem anderen Raum Strom vorhanden ist, also die Eigenschaft z.B. einer Steckerleiste von Strom weg zu Strom da wechselt. Und dann haben wir genau obige Konstellation. Ich frage jetzt einfach so pauschal, ohne Code beizufügen. Falls erforderlich, sende ich selbstverständlich umgehend nach. Gruß von der Ostseeküste Nordseekrabbe