我有一个样式表设置,我在其中设置了设置字体大小的标签,如<size=23px>
。是否可以在运行时以某种方式修改样式表来更改这些大小(即使我必须一个接一个地做)?这是为了在游戏的UI设置中实现字体大小滑块(理想情况下,我希望每个字体大小乘以一个修饰符)。谢谢
编辑:澄清一下,我通过样式表中的开始标记设置大小,我希望在运行时更新这些设置,而不是更新TextMeshProUGUI组件上的文本大小!
我可以直接引用我的默认样式表。根据https://docs.unity3d.com/Packages/com.unity.textmeshpro@1.3/api/TMPro.TMP_StyleSheet.html,"GetStyle"检索"与HashCode匹配的样式"(或者名称,如果我给它一个字符串参数)。但是,一旦我得到了样式,我的选择就非常有限了:https://docs.unity3d.com/Packages/com.unity.textmeshpro@1.3/api/TMPro.TMP_Style.html?q=TMP_Style基于此,我最好的选择是查询"styleOpeningDefinition"。
我可以通过styleOpeningDefinition获取开始标记,然后找到并替换"〈size =" 50px "〉"标记中表示大小的相关数字,但它是一个只读属性,所以我不能在以后设置它。
下面是代码:
TMP_Text text = GetComponent<TMP_Text>();
TMP_Style style = styleSheet.GetStyle("H1");
openingTags = style.styleOpeningDefinition;
string[] size = openingTags.Split("px><cspace=");
string _splitString = size[0].Replace("<size=", "");
float _currentSize = float.Parse(_splitString);
_currentSize *= multiplier;
string _newTags = "<size=" + _currentSize + "px>" + size[1];
style.styleOpeningDefinition = _newTags; //Property or indexer 'TMP_Style.styleOpeningDefinition' cannot be assigned to -- it is read only
style.RefreshStyle();
1条答案
按热度按时间eufgjt7s1#
在Unity中,您可以使用UnityEngine.UI.Text组件在运行时更改文本元素的字体大小。您可以使用Text组件的fontSize属性更改字体大小。
此脚本将更新每帧文本元素的字体大小,将当前字体大小乘以fontSizeModifier变量。您可以使用此脚本并将其附加到要修改的文本元素,也可以创建文本列表并通过循环修改所有文本。