jeudi 12 janvier 2012

Barre de progression GUI

Toute petite classe pour afficher des barres de progression dans la GUI.
Pour faire des barre simplistes de ce style la (pas tres jolie, a vocation de debug):

C'est une classe statique qu'il faut donc appeller cGUIProgressBar.DrawGUI(...)
Ca utilise la GUI, il faut donc imperativement appeller cette fonction à partir des acallback unity OnGUI().

using UnityEngine;
using System.Collections;


public class cGUIProgressBar
{
private static Texture2D mWhiteTex;
private static GUIStyle mStyle;


//----------------------------------------
// A appeller dans un callback unity OnGUI()
//----------------------------------------
public static void DrawGUI(int x, int y, int count, int total, string prefix, int width)
{
if (mWhiteTex==null) mWhiteTex = Resources.Load("Textures/white") as Texture2D; //Texture 8*8 (ou autre) toute blanche à placer dans Resources/Textures
if (mStyle==null)
{
mStyle = new GUIStyle();
mStyle.alignment = TextAnchor.MiddleCenter;
mStyle.font = Resources.Load("Font/FontProgressBar") as Font; //Font Arial size 13 à placer dans Resources/Font
mStyle.fontStyle = FontStyle.Bold;
}
GUI.color = Color.black;
GUI.DrawTexture(new Rect(x, y, width+2, 18), mWhiteTex);
GUI.color = new Color(0.8f,0,0);
GUI.DrawTexture(new Rect(x+1,y+1,width,16), mWhiteTex);
GUI.color = Color.white;
float val = 1;
if (total!=0) val = ((count)/(float)total);
GUI.DrawTexture(new Rect(x+1, y+1, val*width, 16), mWhiteTex);
GUI.color = Color.black;
GUI.Label(new Rect(x, y, width+2, 18), prefix+" "+((int)(val*100))+"% ("+count+"/"+total+")", mStyle);
GUI.color = Color.white;
}
}

Aucun commentaire:

Enregistrer un commentaire