StolleJay Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Hallo, ich habe hier ein Spawning Script welches mir Objekte von einem Array Spawnt. Ich möchte aber jetzt den Spawnenden Objekten ein Script geben ich habe aber keinen blassen Schimmer wie. var objectsToSpawn : GameObject[]; var spawnDelayMin : int; var spawnDelayMax : int; var spawnReady : boolean; var spawnCount : int; var spawnMax : int; private var timeSinceSpawn : float = 0; static var wayMin : int; static var wayMax : int; var setWayMin : int; var setWayMax : int; function Start () { spawnReady = true; wayMin = setWayMin; wayMax = setWayMax; } function Update () { if(spawnCount == spawnMax) { spawnReady = false; } if(spawnReady == true) { spawnDelay = (Random.Range(spawnDelayMin, spawnDelayMax)); if (timeSinceSpawn >= spawnDelay) { var thingToSpawn : int = Random.Range(0, objectsToSpawn.length); Instantiate(objectsToSpawn[thingToSpawn], transform.position, transform.rotation); spawnCount++; timeSinceSpawn = 0; } else { timeSinceSpawn += Time.deltaTime; } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Randee Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Die "Instantiate"-Methode kann dir ein GameObject zurückgeben und dann hilft dir die Methode "AddComponent" weiter Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 12. August 2013 Autor Melden Share Geschrieben 12. August 2013 So weit war ich auch schon nur weiß ich nicht wie. Habe auch schon in die Reference geschaut aber dort hab ich nicht direkt was gefunden. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Klar, ich hab heute Superman gesehen, klingt genauso glaubhaft. In der Referenz ist ein Beispiel anhand eines Rigidbodies, ein bisschen Codeverständniss und dann sollte es kein Ding mehr sein. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 12. August 2013 Autor Melden Share Geschrieben 12. August 2013 Meine Objekte sind aber leider keine "Rigidbodys". Sollten auch keine sein. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Deshalb greift der Part mit Codeverständniss, Instantiate klont das Objekt was du da reingibst, ergo kannst du daraus den gleichen Typen auch wieder bekommen. In dem Beispiel war es ein Rigidbody, wenn du was anderes reingibst, bekommst du auch was anderes heraus. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 12. August 2013 Autor Melden Share Geschrieben 12. August 2013 Dann versteh ich nicht wieso er die Scripts nicht mit klont. Mein Objekt welches ich Clone (Prefab) besitzt alles was es baucht wie Texturen, Scripts etc. aber klonen tut er nur das Objekt mit Texturen aber ohne Scripts. Im Inspector steht dort wo die Scripts sein sollten immer "None" Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
koaangel Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Dann musst du das gewünschte Script dem Prefab zuweisen, dann das Prefab auf deinen ObjectstoSpawn slot ziehen und dann instanziert er wie gewünscht das Prefab inklusive dem Script Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 12. August 2013 Autor Melden Share Geschrieben 12. August 2013 Eben nicht. Das Script liegt wie die Texturen auf dem Prefab und das Prefab im "ObjectsToSpawn" Array aber wie gesagt er klont nur das Objekt + Texturen aber keine Scripts die aber schon auf dem Prefab liegen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
koaangel Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Instantiate klont das gesamte Prefab inlusive allen Komponenten. Irgendwo muss also ein Fehler liegen. Ich schlage vor, du wiederholst nochmal alle oben genannten Schritte. - Script dem Prefab zuweisen - Prefab auf GameObject Liste ziehen Falls das nicht funktioniert, dann poste doch bitte einen Screenshot des Prefabs im Inspektor Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 12. August 2013 Autor Melden Share Geschrieben 12. August 2013 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
koaangel Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Das was du da markiert hast,das nicht zugewiesen ist, ist nicht das Script selbst, sondern eine Variable des Scripts. Wenn du das was drin haben möchtest, das mit instanziert werden soll, dann musst du das auf diese Stelle draufziehen, damit das Prefab komplett ist Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 12. August 2013 Autor Melden Share Geschrieben 12. August 2013 Ja sorry hab ich mich oben wohl etwas Falsch ausgedrückt Wenn ich dort das Script drauf ziehe bzw. Auswähle passiert nichts. Es bleibt immer das "None" drin stehen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
koaangel Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Da gehört auch nicht das Script draufgezogen, sondern irgendwas anderes. Was genau da fehlt, das musst du schon im Script selbst nachschauen, welchen Typ die Variable Light State hat. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 12. August 2013 Autor Melden Share Geschrieben 12. August 2013 Die Variable ist: var lightState : TrafficLight_lightState; Das ist das einzige was wie gesagt nicht klappen will. Alles andere klappt nur eben bei diesem Instantiate gehts nich. Weiter unten im Script lese ich andere dinge aus dem oben eingebundenem Script aus. if(lightState.ampelGet() == 0) { //something... } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
koaangel Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Tja, keine Ahnung, was da hingehört. Ich nehme mal an, dass du das Script nicht selbst geschrieben hast, also solltest du nochmal bei der entsprechenden Quelle nachsehen, was genau da hingehört Der Typ "TrafficLight_lightState" muss jedenfalls irgendwo definiert worden sein, entweder im gleichen Script oder irgendwo anders Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 12. August 2013 Autor Melden Share Geschrieben 12. August 2013 "TrafficLight_lightState" ist ein anderes Script welches genau so heißt. Ich hatte das Script vor paar Wochen einigen Monaten mal mit jemand zusammen angefangen doch der jemand Meldet sich leider nicht mehr. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
koaangel Geschrieben 12. August 2013 Melden Share Geschrieben 12. August 2013 Ohne Gewähr, aber soweit ich weiss, geht das so nicht, wie du das vorhast. Das Script "TrafficLight_lightState" braucht ja ebenfalls ein GameObjekt, auf dem es liegt, damit Unity weiss, welche Instanz davon angesprochen werden soll. Ein reines Script ist kein Prefab. Deswegen funktioniert auch das auf die Variable ziehen nicht. Du musst also entweder das Script auf ein GameObjekt legen und dann dieses GameObjekt ansprechen oder aber wenn das Script nur einmal existieren soll, die Methoden darin statisch deklarieren, dann kannst du diese direkt über den Scriptnamen aufrufen ohne Instanz. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.