样式与Unity样式表
本内容来自官方文档 https://docs.unity3d.com/Manual/UIE-USS.html
每一个VisualElement都包含属性样式,用于设置元素的尺寸,颜色,绘制方式等。属性样式可以在C#中设置,也可以在样式表中设置。
而UIElements支持用USS编写的样式表(Unity样式表),UXML就类似于HTML,而USS样式就类似于CSS,在本内容中,我只会简单的介绍有关USS及其语法和差异。如果想要更好的学习请参考官方文档以及学习CSS方面的内容。
USS的定义
- 被识别为asset的文本文件,必须以uss为拓展名
- 仅支持样式规则(USS语法与CSS3的W3C规范相匹配)
一般语法如下:
selector
{
property1:value;
property2:value;
}
将USS附加到VisualElement
我们可以将USS附加到任何VisualElement上,且该样式规则适用于VisualElement及其子类,必要时会重新应用样式表。
StyleSheet使用标准Unity API 加载对象,例如AssetDatabase.Load()或Resources.Load()。
使用VisualElement.styleSheets.Add()方法将样式表附加到可视元素。
具体使用参考 Unity2019 UIElement 笔记(一)创建脚本
https://blog.csdn.net/qq_43500611/article/details/89604455
风格匹配
当定义好样式表之后,就可以将其应用到UIElement树上。
在这个过程中,选择器就自动与元素(VisualElement)进行匹配,如果能够匹配,那么该样式声明就会应用于元素。
例如该规则就匹配任何Button对象
Button
{
width: 200px;
}
VisualElement匹配
UIElements会使用以下规则将VisualElement与样式规则进行匹配:
- C#类名
- name属性,是一个字符串
- 由一组字符串组成的class列表
- 该节点的父节点以及位置
可以参考css中的id属性和class属性