unity3d - 列表未显示正确的条目
问题描述
我正在尝试使用以下世界经理类构建一个基于图块的世界:
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;
但是,当我运行代码时,会出现以下问题:图块在第一个调试语句中显示了正确的精灵和地形类型。但在第二个调试语句中,条目与第一个不同。错误在哪里?
解决方案
正如托马斯所说,您正确生成了瓷砖。但是您没有将实例添加到列表中。
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);
}
}
推荐阅读
- haskell - 计算给定输入类型的函数返回类型
- sql - 从匹配特定条件的大表中选择(稀疏)数据点
- php - 生产网站弹出sandbox.paypal支付窗口,而不仅仅是paypal.com支付窗口
- python - 访问被拒绝运行 Jupyter Notebook (Anaconda)
- c++ - Qt C++ 在表之间拖动 QHeaderView
- vb6 - 代码含义——visual basic 6类文件
- mysql - sql复杂连接
- android - NativeScript loadStarted WebView 事件不会在 Android 上触发
- powershell - Powershell - 使用所有者的邮件地址获取统一组
- powershell - 执行顺序