# Hide part of the GUITexture in Unity

I have a Health Bar in my Unity game and it's implemented as a GUITexture with gradient image from red to green.

Now I can reduce it's width from max width to 0, but is still scaled gradient.

public void UpdateHealthBar(int hitPoints) {
healthBar.pixelInset = new Rect(
healthBar.pixelInset.x, healthBar.pixelInset.y,
3* hitPoints, healthBar.pixelInset.height);
}


But I want to hide (make transparent) the right part of this health bar in game progress.

How can I do this? Thanks!

• What about adding an image over top of it (that appears the same as the background)? May 6, 2014 at 14:38

You can do this via script, using GUI.DrawTextureWithTexCoords

This lets you clip-out a rectangle of the texture you want to draw onto the screen.

For instance (within an OnGUI() method)....

float healthFraction = ((float)hitPoints)/maxHitPoints;

Rect screenRect = new Rect(xPosition, yPosition, healthFraction * width, height);
Rect textureRect = new Rect(0, 0, healthFraction, 1);

GUI.DrawTextureWithTexCoords(screenRect, texture, textureRect);


Or if you're using NGUI, you can use UISlider for this. It'll automatically handle vertical, horizontal and radial progression using part of the image.