我正在尝试扩展GUI.TextArea。
代码块在OnGui函数中工作。但是当我改变屏幕尺寸时,textArea将不会处于正确的位置和大小。
有没有像Canvas.ScaleMode.ScaleToFit这样的解决方案,还是应该重新创建GUI.TextArea?
编辑:我在画布中使用按钮,一些图像和文本,并使用canvasScaler脚本轻松缩放它们。但是文本对象不包含多行文本,因此我使用gui创建textarea以显示多行文本。
答案 0 :(得分:3)
统一的UI系统非常易于使用......
1)点击添加画布.. 选择"按屏幕尺寸缩放"
(请注意,这是在" Canvas Scaler" 部分 - 它不在" Canvas" 部分。 )
(2017年 - 注意他们最近改变了"空间"到"尺寸" ......)的措辞
其他选项无关紧要,几乎从未使用过。
2)点击"添加按钮",或添加您想要的任何元素:面板。滚动视图,滑块等
你已经完成了。
这很容易。
对于一个给定的项目:要实现你对POSITION的看法,就这样做......
选择与您相关的选项,可能是中间选项。
在你的剧本中有
public Text hello
这将在您的Inspector面板中为该脚本创建一个插槽(标记为" hello")。
务必拖动物理.Text
单元(例如,在#34; Canvas"下面)到Inspector中的那个插槽。在代码中设置文本是微不足道的:
hello.text = "some text here";
就这么简单。你可以在编辑器中设置类型的大小,形状,位置等,你看到的就是你得到的。
请务必设置以下项目......
......因为你需要它们。欢呼声。
答案 1 :(得分:-1)
您应该尝试使用新的GUI /画布,但如果您出于某种原因决定使用较旧的立即模式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。