【问题标题】:GUIDrawTexture, image does not resize when I resize the game windowGUIDrawTexture,当我调整游戏窗口大小时,图像不会调整大小
【发布时间】:2015-10-26 19:16:02
【问题描述】:

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

我正在制作一个 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;
}



}

【问题讨论】:

  • 为什么人们还要费心使用旧的 GUI 代码。只需更新到 4.6 并使用新的 UI 系统。您甚至不必编写任何代码,它会自行调整大小。
  • 因为人们可能是该语言的新手并且不了解它?那个怎么样。
  • 但它不是一种语言,它只是使用编辑器中已经制作的东西,不涉及编程。如果人们下载了最新版本的 unity 并简单地观看了关于 UI 的单个教程,那么不会有问题。例如youtube.com/watch?v=rsZM3q74Q2k

标签: user-interface unity3d resize unityscript


【解决方案1】:

Unity 的旧 OnGUI 东西已经过时了,并且不会随着屏幕分辨率自动缩放,除非你手动增加字体和纹理大小。

从 Unity 4.6 及更高版本开始,处理 UI 的新方法是使用 Unity 的 UI 画布和相关元素。

您可以通过单击层次结构选项卡中的创建 > UI > 图像 开始,这将为您创建一个画布和一个图像。

退房:

【讨论】:

    【解决方案2】:

    调整 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);
    

    这将使您的内容根据窗口调整大小。

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 2021-11-27
      • 2017-04-29
      • 2021-10-02
      相关资源
      最近更新 更多