【问题标题】:Scaling GUI.TextArea with Screen Size使用屏幕大小缩放 GUI.TextArea
【发布时间】:2016-07-16 00:37:44
【问题描述】:

我正在尝试缩放 GUI.TextArea。

代码块在 OnGui 函数中工作。但是当我改变屏幕大小时,textArea 的位置和大小不会正确。

first screen size

second screen size

有没有像 Canvas.ScaleMode.ScaleToFit 这样的解决方案,或者我应该重新创建 GUI.TextArea?

编辑:我在画布中使用按钮、一些图像和文本,并使用 canvasScaler 脚本轻松缩放它们。但是文本对象不包含多行文本,所以我使用 gui 创建 textarea 以显示多行文本。

【问题讨论】:

  • 您使用的是古老的 Unity“gui”系统。你现在不能使用它,它不再起作用了。

标签: c# user-interface unity3d textarea


【解决方案1】:

unity中的UI系统非常好用...

1) 点击添加画布.. 选择“按屏幕尺寸缩放”

重要!!!!!!!!!!!!!!!

选择“随屏幕大小缩放”至关重要。

(请注意,这是在 "Canvas Scaler" 部分中 - 它不在 "Canvas" 部分中。)

(2017 - 请注意,他们最近将措辞从“空间”更改为“大小”...)

Unity 不小心在该菜单上设置了错误的默认选项。

在他们解决问题之前,务必记住选择“随屏幕大小缩放”。

其他选项无关紧要,几乎从未使用过。

2) 单击“添加按钮”,或添加您想要的任何元素:面板。滚动视图、滑块等。

你已经完成了。

就这么简单。

对于给定的项目:要实现您所说的 POSITION,只需执行此操作 ...

选择与您相关的选项,可能是中间选项。

在你的脚本中有

  public Text hello

这将在您的检查器面板中为该脚本创建一个槽(标记为“hello”)。

确保将物理.Text 单元(即在“Canvas”下方)拖动到检查器中的该插槽。在代码中设置文本很简单:

    hello.text = "some text here"; 

就这么简单。您可以在编辑器中设置类型的大小、形状、位置等,所见即所得。

请务必设置以下项目...

...因为您需要它们。干杯。

【讨论】:

  • 是的,我正在使用画布来缩放按钮以及一些图像和文本。但 text.text 包含几个字符。怎么能像图片一样显示长文本?
  • 如何在画布上使用文本区域?如果我在画布中添加文本,我无法显示我的所有文本
  • 非常简单!在脚本中有 public Text hello 。请务必将您的文本项目拖到其中。当你想设置文字时,就是这么简单.......hello.text = "some text here";
  • 是的,我知道这一点,但 hello.text 不包含多行。我的消息是 message="尊敬的先生,我需要 "+missionAmount+" 公斤粮食。如果您接受,我将支付 "+mission1Reward+" 弗罗林。但我必须在 "+missionDuration+" 个月内收到供应,否则您将欠我 "+penaltyMoney+ “弗洛林!”;所以我需要文本区域。
  • 是的,它确实包含多行。它为您做一切。只需尝试一下。只需在编辑器中尝试。只需设置文本的宽度。将其设置为“包裹”
【解决方案2】:

您应该尝试使用新的 GUI / Canvases,但如果您出于某种原因决定使用旧的即时模式 GUI,您可以这样做:

public static Vector3 GUIScale{
    get{
        float normalWidth = 1024; //Whatever design resolution you want
        float normalHeight = 768;
        return new Vector3(Screen.width / normalWidth, Screen.height / normalHeight, 1);
    }
}


public static Matrix4x4 AdjustedMatrix{
    get {
        return Matrix4x4.TRS(Vector3.zero, Quaternion.identity, GUIScale);
    }
}

void OnGUI(){
    GUI.matrix = AdjustedMatrix;
    (... GUI drawing code ...)
}

这将使 GUI 始终占据相同数量的屏幕。它会起作用,但在比您设计的“正常”屏幕更高的分辨率和不同的屏幕宽高比下,它可能看起来很糟糕。 绘图时,您还必须使用“正常”分辨率数字而不是 Screen.width 和 Screen.height。

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    相关资源
    最近更新 更多