首页 > 解决方案 > 列表未显示正确的条目

问题描述

我正在尝试使用以下世界经理类构建一个基于图块的世界:

 List<Tile> tiles = new List<Tile>();
 for (int y = 0; y <= worldHeight-1; y++) {          
  for (int x = 0; x <= worldWidth-1; x++) {
   Tile tileToInstantiate = (Tile) Resources.Load("Prefabs/Tile", typeof(Tile));
   Instantiate(tileToInstantiate, new Vector2(x, y), Quaternion.identity, world);
   tiles.Add(tileToInstantiate);
  }
 }
 foreach (Tile aTile in tiles) {
   Debug.Log("D2: " + aTile.GetTerrainType());
 }

Tile 类定义如下:

private void Awake() {
int random = (int)Random.Range(0, 100);
if (random <= GameManager.instance.worldManager.amountOfWater){
  terrainType = TerrainType.Water; } else {
  terrainType = TerrainType.Land;}
  Debug.Log("D1: " + GetTerrainType());            
  spriteRenderer = GetComponent<SpriteRenderer>(); 
  switch (terrainType) {            {
    case TerrainType.Land:
      spriteRenderer.sprite = GameManager.instance.tileSprites[0];
      break;
    case TerrainType.Water:
    spriteRenderer.sprite = GameManager.instance.tileSprites[1];
    break;  

但是,当我运行代码时,会出现以下问题:图块在第一个调试语句中显示了正确的精灵和地形类型。但在第二个调试语句中,条目与第一个不同。错误在哪里?

控制台输出

标签: unity3dcollections

解决方案


正如托马斯所说,您正确生成了瓷砖。但是您没有将实例添加到列表中。

void Start () {
    List<Tile> tiles = new List<Tile>();
    for (int y = 0; y < 4; y++)
    {
        Tile tileToInstantiate = (Tile)Resources.Load("Prefabs/TilePrefab", typeof(Tile));
        Tile tileInstance = Instantiate(tileToInstantiate, tileParent.transform);
        tiles.Add(tileInstance);
    }
    foreach (Tile aTile in tiles)
    {
        Debug.Log("D2: " + aTile.type);
    }
}

在此处输入图像描述 在此处输入图像描述


推荐阅读