我的 Unity 游戏中有一个健康栏,它实现为GUITexture
,渐变图像从红色到绿色。
现在我可以将它的宽度从最大宽度缩小到0,但仍然是缩放渐变。
public void UpdateHealthBar(int hitPoints) {
healthBar.pixelInset = new Rect(
healthBar.pixelInset.x, healthBar.pixelInset.y,
3* hitPoints, healthBar.pixelInset.height);
}
但是我想在游戏进度中隐藏(透明)健康栏的正确部分。
我该怎么做? 谢谢!
答案 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();
}