我如何根据统一的传入数据调整文本框的大小
How can i resize the text box according to the incoming data on unity
我想调整我的 textbox.My 项目的大小,从 firebase 获取一些行,我不知道每个数据有多少行。例如这里有两个文本框。
最上面的例子:出现了 2 行,文本卡住了。
底部的例子:1 行来了,文字看起来像我想要的那样。
我希望每个文本都像第二行一样字体大小。如果 2 行出现文本框调整大小但如何?也许使用 TMP?
我不会使用 unitys vanilla 文本模块,而是使用 Textmesh Pro。 Unity 购买了此资产并免费提供。文本看起来好多了。
至于你的问题。您可以计算传入字符串的字符数并执行 switch-case,这样文本框每 x 个字符增加到一个新行。或者您需要遍历每个字符并添加它们的宽度以获得字符串宽度并使用该数字进行一些数学计算。
get text width / font character width
我获取了面板对象中的所有文本,并根据传入文本的长度增加了面板对象(我的行长度约为 30 个字符)。你可以试试
dPanel.GetComponent<RectTransform>().sizeDelta = new Vector2(dPanel.GetComponent<RectTransform>().sizeDelta.x, 73 + (50 * PanelArttir(soru.dSikki.Length)));
ePanel.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, (dPanel.GetComponent<RectTransform>().anchoredPosition.y - 90 - (50 * PanelArttir(soru.dSikki.Length))));
你可以这样调整字体
//some condition
gameObjectThatHasText.GetComponent<Text>().fontSize = 12;
我想调整我的 textbox.My 项目的大小,从 firebase 获取一些行,我不知道每个数据有多少行。例如这里有两个文本框。
最上面的例子:出现了 2 行,文本卡住了。 底部的例子:1 行来了,文字看起来像我想要的那样。 我希望每个文本都像第二行一样字体大小。如果 2 行出现文本框调整大小但如何?也许使用 TMP?
我不会使用 unitys vanilla 文本模块,而是使用 Textmesh Pro。 Unity 购买了此资产并免费提供。文本看起来好多了。
至于你的问题。您可以计算传入字符串的字符数并执行 switch-case,这样文本框每 x 个字符增加到一个新行。或者您需要遍历每个字符并添加它们的宽度以获得字符串宽度并使用该数字进行一些数学计算。
get text width / font character width
我获取了面板对象中的所有文本,并根据传入文本的长度增加了面板对象(我的行长度约为 30 个字符)。你可以试试
dPanel.GetComponent<RectTransform>().sizeDelta = new Vector2(dPanel.GetComponent<RectTransform>().sizeDelta.x, 73 + (50 * PanelArttir(soru.dSikki.Length)));
ePanel.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, (dPanel.GetComponent<RectTransform>().anchoredPosition.y - 90 - (50 * PanelArttir(soru.dSikki.Length))));
你可以这样调整字体
//some condition
gameObjectThatHasText.GetComponent<Text>().fontSize = 12;