unity 地图的长宽和地图每个格子是0.5,那么Texture2D newMaskTex = new Texture2D((int)(410/0.5f), (int)(350/0.5f ) 的数据可以代表每个格子0.5 那么如何加载Texture2的数据通过双重for循环显示出来
时间: 2024-03-10 21:49:17 浏览: 132
可以使用双重 for 循环来遍历 Texture2D 中每个像素,根据像素的颜色来显示地图上每个格子的信息。具体的代码如下所示:
```csharp
// 假设 newMaskTex 是一个已经加载好的 Texture2D 对象
// 假设 tileSize = 0.5,即每个格子的大小为 0.5
// 计算地图的行数和列数
int numRows = newMaskTex.height;
int numCols = newMaskTex.width;
// 遍历每个像素
for (int y = 0; y < numRows; y++)
{
for (int x = 0; x < numCols; x++)
{
// 获取当前像素的颜色
Color pixelColor = newMaskTex.GetPixel(x, y);
// 根据像素的颜色来判断格子类型
if (pixelColor == Color.black)
{
// 当前格子为障碍物
// 在屏幕上显示一个黑色的正方形代表该格子
Vector3 tilePos = new Vector3(x * tileSize, 0f, y * tileSize);
GameObject obstacleTile = GameObject.CreatePrimitive(PrimitiveType.Cube);
obstacleTile.transform.position = tilePos;
obstacleTile.GetComponent<Renderer>().material.color = Color.black;
}
else
{
// 当前格子为空地
// 在屏幕上显示一个白色的正方形代表该格子
Vector3 tilePos = new Vector3(x * tileSize, 0f, y * tileSize);
GameObject emptyTile = GameObject.CreatePrimitive(PrimitiveType.Cube);
emptyTile.transform.position = tilePos;
emptyTile.GetComponent<Renderer>().material.color = Color.white;
}
}
}
```
上面的代码中,我们使用 `GetPixel` 方法来获取每个像素的颜色,然后根据颜色来判断每个格子的类型。如果像素的颜色为黑色,就代表该格子为障碍物,我们就在屏幕上显示一个黑色的正方形;如果像素的颜色为白色,就代表该格子为空地,我们就在屏幕上显示一个白色的正方形。可以根据实际需要来修改代码,比如可以使用其他方式来显示格子,或者使用不同的颜色来表示不同的格子类型。
阅读全文