OnGUI生命条缩放

本文关键字:缩放 生命 OnGUI | 更新日期: 2023-09-27 18:06:18

我正在尝试为一款使用OnGUI的2D游戏设置生命值条。我有一个外部纹理和一个内部纹理的仪表。我现在的设置部分有效。我可以改变内部仪表的比例,使它看起来像是在消耗,但是沿着x的位置也在变化。这会导致一个尴尬的效果,以及仪表移动到容器外。

void Update ()
{
    score = EnemyScript.killCount * 100;
    powerScale -= 1; 
}
void OnGUI()
{
    //Score and Power Containter
    GUILayout.BeginArea(new Rect(Screen.width/8, Screen.height/8, 500, 200));
    GUILayout.Label("Score: " + score, style);
    GUI.DrawTexture(new Rect(-10,20,200,80),powerBoundry);
    GUILayout.EndArea();
    //Power Meter
    GUILayout.BeginArea(new Rect(Screen.width/8, Screen.height/8, 450, 200));
    GUI.DrawTexture(new Rect(-10,20,powerScale,80),powerFill, ScaleMode.ScaleAndCrop);
    GUILayout.EndArea();
}

有可能将其锚定在适当的位置吗?或者让它成为游戏对象的子对象来锚定它?

OnGUI生命条缩放

尝试使用drawtexturewithtexcoord。

void OnGUI()
{
    GUILayout.BeginArea(new Rect(Screen.width / 8, Screen.height / 8, 500, 200));
    GUI.DrawTexture(new Rect(-10, 20, 200, 80), powerBoundry);
    GUI.DrawTextureWithTexCoords(new Rect(-10, 20, powerScale, 80), powerFill, new Rect(0f, 0f, (float)powerScale / 200f, 1f));
    GUILayout.EndArea();
}