1

如何在游戏对象中创建游戏对象?大家好,我无法解决这个解决方案问题,不知道为什么但它不起作用,我是统一 3d 的新手,所以也许我在编写代码时犯了错误,感谢所有为我付出时间的人。

我想从你那里得到一个建议,我怎么能在不使用太多 cpu 的情况下做到这一点。

我试过了:

GameObject.Find(..),GameObject.Instantiate,GameObject.Find("TerrainData").GetComponentInChildren

它没有用。这是我的代码:

if (parentObj == 1)
{   
    GameObject newParentObject = new GameObject();

    newParentObject.active = true;
    newParentObject.name = "TerrainData";
    //newObjs.transform.position = loc*chunkSize;
    //newObjs.SendMessage("regenerateMesh");
    parentObj++;
}

while (m_terrainToCreate.Count > 0 && Time.realtimeSinceStartup - curTime < 0.016)
{
    Vector3 loc = m_terrainToCreate.Dequeue();
    int[] pos = getCachedChunkPos(Mathf.RoundToInt(loc.x), Mathf.RoundToInt(loc.y), Mathf.RoundToInt(loc.z));

    GameObject newObj = m_meshCache[pos[0], pos[1], pos[2]];// = m_freePool.Dequeue();

    newObj.active = true;
    newObj.name = "TerrainChunk (" + loc.x.ToString() + ", " + loc.y.ToString() + ", " + loc.z.ToString() + ")";
    newObj.transform.position = loc*chunkSize;
    newObj.SendMessage("regenerateMesh");
}

""linked",设置孩子的 transform.parent" 是的,就是这样。我怎样才能捕捉到“TerrainData”游戏对象?

试过:

    GameObject newObj = m_meshCache[pos[0], pos[1], pos[2]];// = m_freePool.Dequeue();

    newObj.transform.parent = GameObject.Find("TerrainData");

newObj.gameObject.transform.parent = gameObject.transform.Find ("TerrainData");
newObj.transform.parent = transform.Find("TerrainData");

但我认为它不会改变物体?它转换“转换”?

4

1 回答 1

3

试试这个...

创建一个属性来包含您的对象:

public Transform Terrain;

然后你可以做这样的事情......

terrain = Instantiate(Terrain) as Transform;
terrain.parent = gameObject.transform;
terrain.position = new Vector3(0, 0, 0);
terrain.name = "My Terrain";
于 2013-07-28T15:01:45.817 回答