在Unity中隐藏GUITexture的一部分

时间:2014-05-06 13:50:36

标签: unity3d guitexture

我的 Unity 游戏中有一个健康栏,它实现为GUITexture,渐变图像从红色到绿色。

enter image description here

现在我可以将它的宽度从最大宽度缩小到0,但仍然是缩放渐变。

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

enter image description here

但是我想在游戏进度中隐藏(透明)健康栏的正确部分。

enter image description here

我该怎么做? 谢谢!

2 个答案:

答案 0 :(得分:1)

或者您可以使用GUI.DrawTextureWithTexCoords()

public Texture2D texture;
public float hp = 100f;
public const float hpMax = 100f;

void OnGUI()
{
    GUI.DrawTextureWithTexCoords (new Rect (0, 0, hp, 20), texture, new Rect (0f, 0f, hp/hpMax, 1f));
}

答案 1 :(得分:0)

正如Bart建议的那样,您可以使用GUI.BeginGroup

这是一个例子

public Texture2D texture;
public Rect textureCrop = new Rect( 0.1f, 0.1f, 0.5f, 0.25f );
public Vector2 position = new Vector2( 10, 10 );

void OnGUI()
{
    GUI.BeginGroup( new Rect( position.x, position.y, texture.width * textureCrop.width, texture.height * textureCrop.height ) );
    GUI.DrawTexture( new Rect( -texture.width * textureCrop.x, -texture.height * textureCrop.y, texture.width, texture.height ), texture );
    GUI.EndGroup();
}