# isReadable

> Whether Unity stores an additional copy of this texture's pixel data in CPU-addressable memory.

## Definition

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

```csharp
public virtual bool isReadable { get; }
```

### Remarks

This is required for methods that read, write, and manipulate the pixel data on the CPU, such as [Texture2D.GetPixels](/engine/6000.7/script-reference/unityengine/texture2d/getpixels.md) or [ImageConversion.EncodeToPNG](/engine/6000.7/script-reference/unityengine/imageconversion/encodetopng.md). It is not required for methods that perform all their work on the GPU, such as [Graphics.CopyTexture](/engine/6000.7/script-reference/unityengine/graphics/copytexture.md) or [Graphics.Blit](/engine/6000.7/script-reference/unityengine/graphics/blit.md).

By default, this is `false` for texture assets that you import into your project. To toggle this, use the **Read/Write Enabled** setting in the [Texture Import Settings](/engine/6000.7/manual/materials-and-shaders/textures/textures-reference/class-texture-importer.md), or set [TextureImporter.isReadable](/engine/6000.7/script-reference/unityeditor/textureimporter/isreadable.md).  If you're using the [Particle System Shape Module](/engine/6000.7/manual/visual-effects/particle-systems/particle-system-modules/part-sys-shape-module.md) or [Terrain Paint Detail](/engine/6000.7/manual/creating-environments/script-terrain/terrain-grass.md) component, then you must enable this setting for Unity to render the textures properly in a Player build, or the build fails. Use the Game Objects view in Project Auditor (**Window** > **Analysis** > **Project Auditor**) to find and fix similar issues across your project.

By default, this is `true` when you create a texture from a script.

**Note:** Readable textures use more memory than non-readable textures. You should only make a texture readable when you need to, and you should make textures non-readable when you are done working with the data on the CPU.

To make a texture non-readable at runtime, call the `Apply` method for your type of texture, for example [Texture2D.Apply](/engine/6000.7/script-reference/unityengine/texture2d/apply.md) or [Cubemap.Apply](/engine/6000.7/script-reference/unityengine/cubemap/apply.md) and set the `makeNoLongerReadable` parameter to `true`.
