当我尝试将文本居中时,GUILayout.TextField的框会消失,为什么会这样做以及如何修复它?

时间:2018-06-09 03:41:47

标签: c# unity3d

我有一个GUILayout.TextField,我需要将文本居中。我添加了一个GUIStyle作为参数

centerStyle = new GUIStyle
{
    alignment = TextAnchor.MiddleCenter,
};

但是,这会导致我的GUILayout.TextField的背景框消失,文本变得不对齐。

在居中之前: Before

居中后: After

(抱歉,我无法发布图片)

这是我创建TextField的代码:

GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
guildName = GUILayout.TextField(guildName, 20, centerStyle, GUILayout.Width(200));
bool canCreate = true;

foreach (string word in guilds)
{
   if (guildName == word)
       canCreate = false;
}

if (GUILayout.Button("Create", GUILayout.Width(75)) && canCreate)
{
    GameManagerVik.CreateGuild(guildName);
}

GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();

对于我的代码的任何帮助或建议将非常感谢,提前感谢!

1 个答案:

答案 0 :(得分:2)

请勿使用任何需要放置在OnGUI功能中的API。其中包括GUILayout.TextFieldGUIStyle。这是旧的UI系统,已被替换为新系统。仅在制作编辑器插件时使用此功能。

如果您想从用户那里获取文字,请使用InputField组件。

要创建一个,请转到GameObject ---> UI --->输入字段。

如果要向用户显示文本,请使用Text组件。

要创建一个,请转到GameObject ---> UI --->文本。

您可以在此菜单中查看其他UI组件。

对齐Text组件中的文字:

yourText.alignment = TextAnchor.MiddleCenter;

要检测点击它们的时间,或输入的更改时间,请参阅this发布。