# GetPixel(int, int, int)

> Gets the pixel color at coordinates ( x, y ).

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public Color GetPixel(int x, int y, int mipLevel)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The x coordinate of the pixel to get. The range is `0` through (texture width - 1).**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The y coordinate of the pixel to get. The range is `0` through (texture height - 1).**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The mipmap level to sample. The range is `0` through the texture's [Texture.mipmapCount](/engine/6000.0/script-reference/unityengine/texture/mipmapcount.md). The default value is `0`.

### Returns

| Type                                                          | Description      |
| ------------------------------------------------------------- | ---------------- |
| [Color](/engine/6000.0/script-reference/unityengine/color.md) | The pixel color. |

### Remarks

This method gets pixel data from the texture in CPU memory. [Texture.isReadable](/engine/6000.0/script-reference/unityengine/texture/isreadable.md) must be `true`.

The lower left corner is (0, 0). If the pixel coordinate is outside the texture's dimensions, Unity clamps or repeats it, depending on the texture's [TextureWrapMode](/engine/6000.0/script-reference/unityengine/texturewrapmode.md).

`GetPixel` might be slower than some other texture methods because it converts the format the texture uses into [Color](/engine/6000.0/script-reference/unityengine/color.md). `GetPixel` also needs to decompress compressed textures, and use memory to store the decompressed area. To get pixel data more quickly, use [Texture2D.GetPixelData](/engine/6000.0/script-reference/unityengine/texture2d/getpixeldata.md) instead.

If you need to get a large block of pixels, it might be faster to use [Texture2D.GetPixels32](/engine/6000.0/script-reference/unityengine/texture2d/getpixels32.md) or [Texture2D.GetPixels](/engine/6000.0/script-reference/unityengine/texture2d/getpixels.md).

You can't use `GetPixel` with textures that use Crunch texture compression.

Additional Resources: [Texture2D.GetPixels32](/engine/6000.0/script-reference/unityengine/texture2d/getpixels32.md), [Texture2D.GetPixels](/engine/6000.0/script-reference/unityengine/texture2d/getpixels.md), [Texture2D.SetPixel](/engine/6000.0/script-reference/unityengine/texture2d/setpixel.md), [Texture2D.GetPixelBilinear](/engine/6000.0/script-reference/unityengine/texture2d/getpixelbilinear.md).

### Examples

```csharp
// Sets the y coordinate of the transform to follow a heightmap

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    public Texture2D heightmap;
    public Vector3 size = new Vector3(100, 10, 100);

    void Update()
    {
        int x = Mathf.FloorToInt(transform.position.x / size.x * heightmap.width);
        int z = Mathf.FloorToInt(transform.position.z / size.z * heightmap.height);
        Vector3 pos = transform.position;
        pos.y = heightmap.GetPixel(x, z).grayscale * size.y;
        transform.position = pos;
    }
}
```
