对于上下文,我没有太多的Unity和C#经验,所以如果答案真的很简单,请不要责备我.我试图让地牢的边缘瓷砖在它们各自的边缘上自动创建墙(例如,最右边的一列瓷砖在它的右边有墙).我做了一个瓷砖预制板,它根据4个布尔值改变其精灵,每个布尔值表示边上是否有一堵墙.预制件用于改变精灵,所以预制件本身不是问题.我必须实例化预置来更改它的布尔值,在将数据添加到spawner脚本中新实例化的预置后,预置的精灵不会更新,我只剩下默认的精灵.
我try 将精灵更改从瓷砖预制的start()方法移到一个单独的方法中,以try 让它在实例化后进行更新.
void spawnTile(int r, int c)
{
for(int i = 0; i < c; i++)
{
for(int j = 0; j < r; j++)
{
Instantiate(tile, new Vector3((float)(i * locationIncrement), (float) (-1 * j * locationIncrement), 0), transform.rotation);
if(i == 0)
{
tile.GetComponent<TileScript>().setLeftWall(true);
}
if(i == (c - 1))
{
tile.GetComponent<TileScript>().setRightWall(true);
}
if(j == 0)
{
tile.GetComponent<TileScript>().setTopWall(true);
}
if(j == (r - 1))
{
tile.GetComponent<TileScript>().setBottomWall(true);
}
tile.GetComponent<TileScript>().updateWalls();
}
}
}
这是我在spawner方法中使用的代码,即使实现了上述更改,代码仍然不起作用,给我留下的是所有缺省的精灵,而不是预期的更新的精灵.