NGUI : un patch et une fonctionnalité pour l’UITable

 

 

 

Ngui est vraiment le « Graphical user interface » a utiliser avec Unity. Souple, rapide et surtout optimisé.

Mais lors de son utilisation, un bug est apparu. J’explique :

BUG (Et patch) :

Je télécharge une image distante, je la redimensionne et je l’assigne comme texture principale d’une UITexture. L’image est complètement floue.

La même image redimensionnée s’affiche bien dans un GUITexture mais pas dans l’UITexture.

 

Pourquoi ? Un bug tordu, si l’image redimensionnée a une taille dont la largeur et / ou la hauteur ne sont pas multiple de 2, elle ne peux pas être correctement affichée.

Donc j’ai crée une méthode statique qui crée une texture en multiple de 2 comportant la texture a afficher. Ensuite j’utilise les coordonnées UV du plan qui affiche la texture pour aligner la texture à celui-ci.

L’avantage : MakePixelPerfect() ne déforme pas la texture, et ne change pas sa taille.

L’inconvénient : Une texture est générée à la volée, avec une taille souvent supérieure à l’image originale. Un peu de calcul et un peu de mémoire utilisé.

Voici la méthode :

public static void uiTextureScallingPatch(UITexture uiTexture){
Texture2D texColor = (Texture2D)uiTexture.mainTexture;
int w = texColor.width;
int h = texColor.height;
int max = (w > h)?w:h;
int mult = 2;
while(max > mult)mult += mult;
Texture2D bg = new Texture2D(mult, mult);
for(int x = 0; x < texColor.width; x++) {
for (int y = 0; y < texColor.height; y++) {
bg.SetPixel(x, y, texColor.GetPixel(x, y));
}
}
bg.Apply();
uiTexture.mainTexture=bg;
uiTexture.uvRect = new Rect(1, 1, (float)w/mult, (float)h/mult);
uiTexture.MakePixelPerfect();
}

Il suffit juste d’appeler la méthode avec l’UItexture en paramètre une fois que l’image est assigné.

 

Ensuite, une fonctionnalité qui manquait à l’UITable et dont j’avais absolument besoin  : la position du pivot.

Une fonctionnalité en plus pour l’UITable

J’ai ajouté une nouvelle variable afin de choisir la position du pivot de l’UITable qui par défaut est à gauche.

Donc facile, il suffit de la sélectionner dans l’Editor ou alors de changer la valeur de la variable du type PivotPosition (Left,Center,Right).

 

J’ai crée un composant UITablePositioned, que vous pouvez inclure dans le dossier NGUI. Comme cela, les mises à jour peuvent être effectuées sans supprimer ce composant.

Voici la classe : UITablePositioned.cs

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Website Protected by Spam Master


*