2017-05-22 1 views
-1
public void generateObjectOnTerrain() 
    { 
     generatedObjects = new List<GameObject>(); 
     for (int i = 0; i < objectsToInstantiate; i++) 
     { 
      //Generate random x,z,y position on the terrain 
      float randX = UnityEngine.Random.Range(xTerrainPos, xTerrainPos + terrainWidth); 
      float randZ = UnityEngine.Random.Range(zTerrainPos, zTerrainPos + terrainLength); 

      float yVal = Terrain.activeTerrain.SampleHeight(new Vector3(randX, 0, randZ)); 

      //Generate random x,y,z scale on the terrain 
      randScaleX = Random.Range(3, 70); 
      randScaleY = Random.Range(70, 170); 
      randScaleZ = Random.Range(50, 270); 

      //Apply Offset if needed 
      yVal = yVal + yOffset; 

      //Generate the Prefab on the generated position   
      objInstance = Instantiate(prefab, new Vector3(randX, yVal, randZ), Quaternion.identity); 
      if (randomScale == true) 
       objInstance.transform.localScale = new Vector3(randScaleX, randScaleY, randScaleZ); 

      if (name != "") 
       objInstance.name = name; 

      if (tagName != "") 
       objInstance.tag = tagName; 

      if (parent) 
       objInstance.transform.parent = this.transform; 

      generatedObjects.Add(objInstance); 
     } 
    } 

Die Ausnahme ist auf der LinieWarum, wenn ich ein neues Tag zum Spielobjekt hinzufüge, bekomme ich eine Ausnahme Tag: B ist nicht definiert?

objInstance.tag = tagName; 

tagName ein globaler String-Variable Satz in der Spitze ist auf „“ Ich versuche, einen Tag jeden Gameobject hinzufügen, aber diese B Ausnahme bekommen. Versucht auch objInstance.transform.tag aber die gleiche Ausnahme.

+0

Sind Sie sicher, dass "tagName" ein mögliches Tag in der Tag-Liste des Unity Editors (zur Bearbeitungszeit) ist? – Hellium

Antwort

0

Sie können einem GameObject kein Tag hinzufügen, wenn Sie es nicht zuerst im Unity-Editor für Ihr Projekt definiert haben. Gehen Sie in den Inspektor und wählen Sie "Tag". Sie erhalten dann eine Option "Tag hinzufügen ...", mit der Sie den gewünschten Tag-Namen hinzufügen können. Da das Tag, das Sie zu Ihrem GameObject hinzufügen möchten, definiert wird, erhalten Sie diesen Fehler nicht mehr. Stellen Sie sicher, dass der Name des Tags, den Sie hinzufügen möchten, einem vorhandenen Namen in Ihrer Tag-Liste entspricht.

enter image description here

Um mehr über Tags kennen und wie sie verwendet werden, können Sie auch manual über die Angelegenheit Unity überprüfen.

Verwandte Themen