Jump to content
Unity Insider Forum

Instantiate mit Script?


StolleJay

Recommended Posts

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

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

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

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

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

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

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

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...