void ColorFade() { fadeTimer += Time.deltaTime; if (fadeTimer > fadeTime) { currentColors = paintableTexture.GetPixels32(); for (int x = 0; x <= 99; ++x) { for (int y = 0; y <= 99; ++y) { // Need to transform x and y coordinates to flat coordinates of array int array_pos = y * (int)paintableSprite.rect.width + x; // Check if this is a valid position if (array_pos >= currentColors.Length || array_pos < 0) return; if (currentColors[array_pos].a > 0) { Color colorChange = new Color(currentColors[array_pos].r, currentColors[array_pos].g, currentColors[array_pos].b, currentColors[array_pos].a - fadeAmount); currentColors[array_pos] = colorChange; Debug.Log(currentColors[array_pos].a); } else { currentColors[array_pos] = new Color(currentColors[array_pos].r, currentColors[array_pos].g, currentColors[array_pos].b, 0); } } } paintableTexture.SetPixels32(currentColors); paintableTexture.Apply(); fadeTimer = 0; } }