Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

1

19.10.2016, 22:00

Problem in Unity 5.4.1. Prefabs werden nicht geladen(?)

halle zusammen.

ich habe einem youtube-tutorial zur entwicklung eines 2D jump&run Spieles möglichst sorgfältig nachgearbeitet. eider ist das Tutorial nicht ganz komplett, und ich war drauf und dran in C# meine Kenntnisse zu erweitern, und wollte zB. eine Kill-Zählung (wieviel Feinde der Spielcharakter getötet hat) umsetzen - ich hatte sogar selbstständig eine Code-Lösung gefunden.
Aber: nun stelle ich fest, daß diese Code-Änderungen nicht von unity übernommen werden; denn wenn ich meinen Entwicklercharakter resetten will, möchte ich ihn laut Code ja als Prefab laden. aber ich kann dem prefab-Objekt keine Eigenschaften zuweisen (zB Ammottext, siehe Bildanhang).
Auch die automatische Levelgenerierung (dazu gibts ein eigenes Script) wird nicht vom gameController umgesetzt. D.h. Bei Spiel-testläufen verwendet Unity den Charakter, den ich links in der Hierarchie gelistet habe, nicht den prefab.
Lösch ich diesen aber, und nehme anstatt diesen den prefab, sind alle Einstellungen weg - der Kreislauf beginnt von vorne.

Ich hoffe jemand versteht was ich meine, und knn mir helfen. ich hab zwei Bilder angehangen: Bild a) zeigt den von unity verwendeten Charakter und b) den aus den Prefab, dessen Einstellungen ich nicht ändern kann (warum auch immer?!)

Ich war grade dabei, in C# meine Kenntnisse zu erweitern und kreativ zu werden, aber dadurch werde ich "aufgehalten" :S

PS: Eine "spielbares" Ergebnis gibt es zwar, aber eben das möcht ich "erweitern..." (bild3)
»Martin Mundorf« hat folgende Bilder angehängt:
  • a.png
  • b.png
  • merch_3_kl.jpg
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

2

19.10.2016, 22:30

Prefabs können als Referenzen auf andere GameObjects und Komponenten nur andere Prefabs oder GameObjects/Komponenten innerhalb ihrer eigenen Hierarchie erhalten. Man kann keine GameObjects und Komponenten aus Szenen zuweisen, da die Prefabs unabhängig von den Szenen existieren.
Was du mit der Levelgeneration meinst, kann ich nicht nachvollziehen.

Wenn du ein Prefab verwenden willst, musst du nach der Erzeugung benötigte Referenzen zuweisen, bspw. von der Stelle aus, die die Instanziierung durchführt.
Wenn sich die Vorlage im Level befinden soll, kannst du dieses Objekt einfach im Editor (oder am Anfang per Code) deaktivieren und jede Instanz davon wieder aktivieren.

Solltest du das Gefühl haben, dass bestimmte Fragen oder Aspekte der Fragen nicht ausreichend beantwortet wurden, gehe am besten einfach davon aus, dass diese etwas schwer zu verstehen sind.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

3

19.10.2016, 22:32

Ein in der Hierarchie einmal gesetztes Prefab behält eigens angepasste Werte solange, bis du auf den Button "Revert" im Inspector drückst. Die geänderten Werte sind dick markiert. D.h. die überschreibt die Prefab-Instanz selbst.

Möchtest du sichergehen, dass das Objekt mit Prefab-Einstellungen gespawnt wird, solltest du es erst zur Laufzeit erstellen. Via Instantiate https://docs.unity3d.com/ScriptReference…nstantiate.html

Für das Problem mit der Levelgenerierung müsstest du nochmal genauer zeigen, worum es geht. Ggf. mit Code.
WIP Website: kevinheese.de

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

4

19.10.2016, 22:49

das mit der Reset-Funktion ist mir schon klar, aber das bringt mir in meinem Fall nichts.

im konkreten Fall hatte ich im Code implementiert, daß bei einem "kill" des Gegners eine int +1 gesetzt wird. habe dann auch brav das neue Script resetted, alles neu eingtragen etc. (und zwar beim Charakter in der Hierarchieleiste!) Die Variabel war auch im Inspector zu sehen.
Und dann passiert folgendes: die Variabel blieb "0" - aber auf den Prefab geklickt: dessen Variable stieg an.
Und das, obwohl ich bei beiden das Script resetted hatte.
Merkwürdig ist auch, das ich im Script des Prefab-Charakters keine neuen Werte eintragen kann, bzw. diese nur teilweise mit dem Script übereinstimmen (wenn ich auf den "ammo-text"-Slot das entsprechende Textelement ziehe, tut sich nichts!?)

Nach dem ich alle Code-Änderungen wieder rückgängig gemacht hatte, blieb es so.
Wenn ich das prefab-Objekt verändern könnte, würde ich es gerne spawnen - aber wie gesagt, die Hälfte der Einstellungen fehlen dotr immer, auch wenn ich den funktionierenden Charakter ins Prefab Fenster ziehe...

btw: ich habe gerade erst angefangen, mich mit C# als auch unity zu beschäftigen. Da ich ein learning by doing Mensch bin, kann es natürlich sein, daß dieser Fehler daher kommt, daß ich zwar ein Tutorial nahezu 1:1 nachgebaut habe (und dabei was gelernt), aber dieses Tutorial nie ganz zum Abschluß gebracht wurde... :hmm:
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

19.10.2016, 23:03

(wenn ich auf den "ammo-text"-Slot das entsprechende Textelement ziehe, tut sich nichts!?)
Das habe ich bereits beantwortet.

Bitte erkläre nochmal:
  • Was heißt "Resetten"
  • Welche Variable blieb 0? Woran hast du das erkannt?
Bedenke grundsätzlich, dass im Code bei der Deklaration von Membern zugewiesene Werte als "Standardwerte" anzusehen sind. Sobald die Komponente einem GameObject angehangen wird, ist der Wert dort unabhängig vom "Standardwert" der im Code steht. Bearbeite die Werte also auch jeden Fall über den Editor.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

19.10.2016, 23:33

Und dann passiert folgendes: die Variabel blieb "0" - aber auf den Prefab geklickt: dessen Variable stieg an.

Das Problem ist dass dein Code das Prefab selbst und nicht die Instanz davon verändert. Unity kann da ein wenig merkwürdig wirken. Dein Skript welches den Wert erhöht speichert ja irgendwie das Objekt/Skript in welchem dieser Wert steckt. Versuch das noch mal neu zuzuweisen. Dabei nimmst du jetzt die Instanz aus deiner Hierarchie und nicht das Prefab. Dann sollte es gehen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Mirlix

Supermoderator

Beiträge: 451

Beruf: Developer Advocate

  • Private Nachricht senden

7

20.10.2016, 21:42

Das mag eine doofe Frage sein, aber hast du mal nachdem du die Werte im Objekt der Hierarchie gesetzt hast den Apply Button geklickt. Damit sollten die Werte von der PrefabInstanz aufs Prefab uebertragen werden.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

8

21.10.2016, 00:11

Das funktioniert nicht bei Referenzen auf GameObjects oder Komponenten, die in der Szene liegen. Ausnahme: die GameObjects oder Komponenten befinden sich unterhalb des Prefabs. An den Screenshots sieht man auch, dass normale Werte nicht das Problem sind.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

9

21.10.2016, 19:53

also die Instanzen weise ich ohnehin schon asu der Hierarchie zu.

Und wenn ich die prefabs lösche, und aus hierarchie-Objekten neue prefabs mache, dann verschwinden die Zuweisungen wieder. Genauso mit dem apply-Button: der wird ignoriert.

Ich vermute, das ganze hat mit der "automatischen Levelgenierung" zu tun, aber die hab ich nach Vorlage gebaut. Denn zu Spielbeginn wird kein "Player-Charakter" "erschaffen", sondern der aus meinem Bearbeitungsfenster plumpst auf die Oberfläche und wird gesteuert...
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

10

21.10.2016, 20:06

Und wenn ich die prefabs lösche, und aus hierarchie-Objekten neue prefabs mache, dann verschwinden die Zuweisungen wieder. Genauso mit dem apply-Button: der wird ignoriert.
Prefabs können als Referenzen auf andere GameObjects und Komponenten nur andere Prefabs oder GameObjects/Komponenten innerhalb ihrer eigenen Hierarchie erhalten. Man kann keine GameObjects und Komponenten aus Szenen zuweisen, da die Prefabs unabhängig von den Szenen existieren.
Ob du das Prefab aus einem GameObject erzeugst, welchem die Referenzen bereits zugewiesen wurden, ob du es über "Apply" übernehmen willst oder ob du versuchst, diese manuell zuzuweisen, macht keinen Unterschied. Referenzen auf Objekte in der Szene gehen nicht.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige