赞
踩
在前面三部分,翻译了一下UXML元素的部分,也介绍了如何编写最简单的C#、UXML、USS。
而在这一部分中,主要介绍UXML的特性
本案例来自Unity官方文档 https://docs.unity3d.com/Manual/UIE-WritingUXMLTemplate.html
以下代码展示了一个简单面板:
<?xml version="1.0" encoding="utf-8"?> <UXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="UnityEngine.UIElements" xsi:noNamespaceSchemaLocation="../UIElementsSchema/UIElements.xsd" xsi:schemaLocation="UnityEngine.UIElements ../UIElementsSchema/UnityEngine.UIElements.xsd"> <Label text="Select something to remove from your suitcase:"/> <Box> <Toggle name="boots" label="Boots" value="false" /> <Toggle name="helmet" label="Helmet" value="false" /> <Toggle name="cloak" label="Cloak of invisibility" value="false"/> </Box> <Box> <Button name="cancel" text="Cancel" /> <Button name="ok" text="OK" /> </Box> </UXML>
通过在UXML中定义组件,然后导入< Template >中并作为< Instance >在另一个UXML文件中实例化该元素。在设计大型的UI界面的时候,可以将部分的UI定义为模板UXML文件。
实际操作方式请参考我写的 Unity2019 UIElement 笔记(二)中模板一部分
https://blog.csdn.net/qq_43500611/article/details/89604942
实际操作方式请参考我写的 Unity2019 UIElement 笔记(一)
https://blog.csdn.net/qq_43500611/article/details/89604455
UQuery提供了一组方法来从UIElements中检索元素。
UQuery基于JQuery或Linq,但UQuery旨在尽可能地限制动态内存分配,这样可以在移动平台上实现。
要使用UQuery检索元素,使用UQueryExtensions.Q或初始化QueryBuilder用UQueryExtensions.Query
例如:
我现在做了一个嵌套式的结构:
<Box name="BoxA"> <Box name="BoxA1"> <Label name="labA1 1" text="labA1 1"/> <Label name="labA1 2" text="labA1 2"/> <Label name="labA1 3" text="labA1 3"/> </Box> <Box name="BoxA2"> <Label name="labA2 1" text="labA2 1"/> <Label name="labA2 2" text="labA2 2"/> <Label name="labA2 3" text="labA2 3"/> </Box> </Box> <Box name="BoxB"> <Box name="BoxB1"> <Label name="labB1 1" text="labB1 1"/> <Label name="labB1 2" text="labB1 2"/> <Label name="labB1 3" text="labB1 3"/> </Box> </Box>
那么我就可以从根开始找到第一个具有名字为labA2 2的元素,并把它的名字修改为change
root.Query<Label>("labA2 2").First().text = "change";
同样我们也可以迭代的去使用
比如我们想把BoxB1内的所有Label的text换成"newTitle",就可以用下面的方式
root.Query("BoxB1").Children<Label>().ForEach(lab => lab.text = "newTitle");
最后的效果如下
那么到此为止UXML部分就简单的介绍完了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。