¿Hay alguna manera de leer una image píxel por píxel en la unidad sin distorsiones?

En mi proyecto de unidad, tengo un file de image que contiene información. Me gustaría poder leer este file .bmp píxel por píxel. Así que intenté simplemente cargar un sprite y luego leer su textura. Sin embargo, cuando hago eso, la textura cargada parece ser diferente de la image que estoy usando, como si estuviera comprimida. Traté de modificar la configuration de los activos (convirtiéndola en una textura avanzada con modo de filter de puntos y sin ajustar el formatting a argb32bit) pero no ayuda. ¿Algunas ideas?

EDITAR: Alguna información adicional,

El código con el que cargo la image en una matriz de píxeles

// sprites from which paths will be loaded public Sprite[] path_maps; // Color 24 array which contains the texture bitmap private Color32[] pixels; // graph with paths public Graph[] graphs; void Start () { // I skipped some code that doesn't matter to the problem // go through all path maps for (int i = 0; i < path_maps.Length; i++) { // load sprite into pixels array pixels = path_maps[i].texture.GetPixels32 (); // create new graph graphs [i] = new Graph (); // get graph from path map graphs[i].pixels_to_graph(pixels, path_maps[i].texture.width, path_maps[i].texture.height, camera_width, camera_height); } } 

La function que lee píxeles y crea un nodo para cada píxel de color (solo parte relevante de la function)

 public void pixels_to_graph (Color32[] pixels, int width, int height, double camera_width, double camera_height) { // assign pixels width and height pixels_width = width; pixels_height = height; // assign camera dimensions this.camera_width = camera_width; this.camera_height = camera_height; // First create as many nodes as there are colonetworking pixels (simply read the pixel map) // Note that pixel map contains the bitmap from bottom to the top (left bottom to top right) // create nodes array pixel_nodes = new Node[width*height]; // current position in pixel array. Made for easier calculations int carriage = 0; // go through all rows for (int i = 0; i < height; i++) { // go column by column for (int j = 0; j < width; j++) { // if it's transparent or white - ignore if (pixels [carriage].a == 0 || pixels [carriage].Equals (col_white)) continue; // else add node to the node array pixel_nodes [carriage] = new Node (j, i, pixels_width, pixels_height, camera_width, camera_height); // note that i is the y position while j is the x position // add node to nodes list nodes.Add (pixel_nodes [carriage]); carriage++; } } 

pixels_to_graph function el problema en la pixels_to_graph function anterior. Cuando lo depuro con una image de 1680×1050, que tiene píxeles en su esquina inferior izquierda (tres cuadrados negros con 1 píxel de distancia entre ellos, de tamaño 3x3px, 2x2px, 1x1px) solo detecta el 3×3, el valor de color en la position del otros 2 cuadrados son blancos. Cuando probé otras forms, también descubrí otras distorsiones, algunas líneas de 1px de ancho no están allí, así como píxeles individuales.

Mi configuration de textura actual (aunque note que probé con diferentes opciones pero algunas de ellas no muestran nada, al less muestra algo): enter image description here

Welp. Parece haber sido un error de encoding. En el código anterior:

 for (int j = 0; j < width; j++) { // if it's transparent or white - ignore if (pixels [carriage].a == 0 || pixels [carriage].Equals (col_white)) continue; <------------ BUG LOCATION // else add node to the node array pixel_nodes [carriage] = new Node (j, i, pixels_width, pixels_height, camera_width, camera_height); // note that i is the y position while j is the x position // add node to nodes list nodes.Add (pixel_nodes [carriage]); carriage++; } 

debido a esto, la position del carro no cambia cuando alfa es cero o cuando se encuentra color blanco. Obviamente, perdí 2 días para depurar un error causado por tratar de hacer que el código "mejorara".

Parece que su formatting de textura está configurado en RGBA Compressed (parte inferior del panel de textura), lo que puede ser la razón por la que su resultado no es perfecto en píxeles. Intente configurarlo en RGB 24 bit , lo que debería desactivar la compression y darle el resultado que busca. Se pueden encontrar más detalles sobre los formattings de textura aquí en 'Anulaciones por plataforma'