Why when creating new GameObjects it's not changing the tag? [duplicate]

一世执手 提交于 2019-12-25 09:35:35

问题


In the first script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InstantiateObjects : MonoBehaviour
{
    public GameObject prefab;
    public Terrain terrain;
    public float yOffset = 0.5f;

    private float terrainWidth;
    private float terrainLength;

    private float xTerrainPos;
    private float zTerrainPos;


    void Start()
    {
        //Get terrain size
        terrainWidth = terrain.terrainData.size.x;
        terrainLength = terrain.terrainData.size.z;

        //Get terrain position
        xTerrainPos = terrain.transform.position.x;
        zTerrainPos = terrain.transform.position.z;

        //generateObjectOnTerrain();
    }

    public void generateObjectOnTerrain(bool parent, string tag)
    {
        //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));

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

        //Generate the Prefab on the generated position        
        GameObject objInstance = Instantiate(prefab, new Vector3(randX, yVal, randZ), Quaternion.identity);
        if (parent)
            objInstance.transform.parent = this.transform;
        objInstance.transform.tag = tag;
    }
}

And in the script that i'm using this:

private void Start()
    {
        for (int i = 0; i < cloneTeleportations; i++)
        {
            InstantiateObjects gos = GetComponent<InstantiateObjects>();
            gos.prefab = prefab;
            gos.generateObjectOnTerrain(true, "ddd");//"Teleportation");
        }
    }

If i will change it from true to false it will not make the GameObjects childs and if it's true they will be childs. The parent part is working. But for testing i tried to change the tag to "ddd" and i saw in the first script that the tag is "ddd":

objInstance.transform.tag = tag;

tag is "ddd" and objInstance.transform.tag by default is "Teleportation" when running the game all the cloned gameobjects tagged as "Teleportation" and not "ddd".


回答1:


In Unity you must first add a tag manually from the Editor and only then you will be able to assign it to a GameObject. If the tag does not exist it's not possible to assign it.



来源:https://stackoverflow.com/questions/43994095/why-when-creating-new-gameobjects-its-not-changing-the-tag

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!