GUIDrawTexture,当我调整游戏窗口大小时图像不会调整大小

时间:2015-08-04 11:40:47

标签: user-interface unity3d resize unityscript

标题可能毫无意义但我不知道如何解释它...我可以在这里更好地解释。

我正在制作一个3D游戏,我将hud设置到左下角,它会 当我调整窗口大小/选择不同的分辨率时调整大小并进行调整,但健康/口渴栏停留在一个区域,不会随之调整并保持在最佳状态...

在示例中,如果hud位于左下方,当我调整大小并更改分辨率时,健康口渴栏位于左侧,但它们会在屏幕中间向上移动希望有意义且类似于此处是我的代码提前感谢:))!

var hudSize : Vector2 = new Vector2(244, 500);
var size : Vector2 = new Vector2(240, 40);
var thirstSize : Vector2 = new Vector2(244,60);

var healthPos : Vector2 = new Vector2(20, 20);
var healthBarDisplay : float = 1;
var healthBarFull : Texture2D;



var hungerPos : Vector2 = new Vector2(20, 60);
var hungerBarDisplay : float = 1;
var hungerBarFull : Texture2D;

var thirstPos : Vector2 = new Vector2(20, 100);
var thirstBarDisplay : float = 1;
var thirstBarFull : Texture2D;

var healthFallRate : int = 150;
var hungerFallRate : int = 150;
var thirstFallRate : int = 100;

var hudPos : Vector2 = new Vector2(0, 0);
var hudDisplay : Texture2D;

var canJump : boolean = false;
var jumpTimer : float = 0.7;


function Start()
{
onMotor = GetComponent(CharacterController);
controller = GetComponent(CharacterController);
}

//OnScreenDrawing Textures
function OnGUI()
{


GUI.DrawTexture(new Rect (0, Screen.height - 125,244,125), hudDisplay);                  


//HealthBar
GUI.BeginGroup(new Rect (healthPos.x, healthPos.y, size.x, size.y));    
GUI.BeginGroup(new Rect (0, 0, size.x * healthBarDisplay, size.y));
GUI.DrawTexture(Rect(0, 0, size.x, size.y), healthBarFull);

GUI.EndGroup();
GUI.EndGroup();

//ThirstBar
GUI.BeginGroup(new Rect (thirstPos.x, thirstPos.y, size.x, size.y));
GUI.BeginGroup(new Rect (0, 0, thirstSize.x * thirstBarDisplay, thirstSize.y));
GUI.DrawTexture(Rect(0, 0, thirstSize.x, thirstSize.y), thirstBarFull);


GUI.EndGroup();
GUI.EndGroup();


}


function Update()
{

if(hungerBarDisplay <= 100)
{
    healthBarDisplay -= Time.deltaTime / healthFallRate * 2;
    thirstBarDisplay -= Time.deltaTime / thirstFallRate * 5;
}



}

2 个答案:

答案 0 :(得分:2)

Unity的OnGUI旧内容已过时,并且无法自动缩放屏幕分辨率,无法手动增加字体和纹理大小。

从Unity 4.6及更高版本开始,做UI界面的新方法是使用Unity的UI Canvas和相关元素。

点击创建&gt;即可开始使用UI&gt; “层次结构”选项卡中的图像,它将为您创建“画布”和“图像”。

退房:

答案 1 :(得分:0)

调整Unity Gui大小的一种方法是使用屏幕特定的宽度和高度。例如代码

GUI.DrawTexture(new Rect (0, Screen.height - 125,244,125), hudDisplay);
你可以做这样的事情。

GUI.DrawTexture(new Rect (0, Screen.height - (Screen.height*0.1f),Screen.width/2.0f,Screen.height/8.0f), hudDisplay);

这会根据窗口调整内容大小。