Unity3D 中的生成和阵列问题

Trouble with Spawning and Arrays in Unity3D

我在 Unity (4.6) 中创建的 2D 游戏中有一个清单 window,其中的各个插槽在游戏开始时填充了独特的对象。用户可以将对象从插槽中拖到游戏区域,在那里他们可以安排对象。用户还可以丢弃一个对象(这会将其移回库存)。

我创建了一个数组来计算布局网格中的对象数量,但从那里我遇到了一些问题:

1:如何在拖出前一个对象的同一插槽中重新生成该对象的新副本,并设置一个最大值,以便用户只能拖出特定数量的相同对象?

2:我如何 store/access 网格布局组中的对象索引,以便当对象放回清单中时,它们会回到最初拉出的相同位置?

这就是我目前的全部内容

public GameObject[] animalParts;

void Start () {
    // Get all of my animal parts indexed
    animalParts = GameObject.FindGameObjectsWithTag("AnimalPart");

    for(int i = 0; i < animalParts.Length; i++)
    {
        Debug.Log ("Animal part " + i + " is named " + animalParts[i].name);
    }
}

我现在如何将索引号分配给每个 animalPart 中的变量,以便稍后在对象被移除后被拖回库存时可以调用它?

您可能需要为此使用数据结构。喜欢:

public struct AnimalPartObject
{
    public GameObject GO;
    public int Index;
    public int MaxItemsToSpawn;
}

然后您需要在脚本中创建一个 List<AnimalPartObject> listOfParts; 来管理您在游戏中生成的对象。并将脚本附加到每个部分元素以设置其 AnimalPartObject 信息。

希望这能解决您的问题。如果它达到了目的,请竖起大拇指。谢谢