使用屏幕大小缩放GUI.TextArea

我正在尝试扩展GUI.TextArea。

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

第一屏尺寸

第二屏尺寸

是否有任何解决方案,如Canvas.ScaleMode.ScaleToFit或我应该重新创建GUI.TextArea?

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

统一的UI系统非常容易使用……

1)点击添加canvas.. 选择“带屏幕尺寸的比例”

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

选择“具有屏幕尺寸的比例”至关重要。

(请注意,这是在“Canvas Scaler”部分 – 而不是“Canvas”部分。)

在此处输入图像描述

(2017年 – 注意他们最近将措辞从“空间”改为“大小”……)

Unity意外地在该菜单上设置了WRONG DEFAULT OPTION。

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

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

你已经完成了。

就这么简单。

要实现你对POSITION的看法,就这样做……

在此处输入图像描述

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

在你的脚本中有

public Text hello 

一定要拖动你的Text项目。 在代码中设置文本是微不足道的:

  hello.text = "some text here"; 

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

务必设置以下项目……

在此处输入图像描述

……因为你需要它们。 干杯。

您应该尝试使用新的GUI /canvas,但如果您出于某种原因决定使用较旧的立即模式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。