使用屏幕大小缩放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。