从C#加载UXML
要从UXML模板构建用户界面,必须先将模板加载到VisualTreeAsset:
var template = EditorGUIUtility.Load("path/to/file.uxml") as VisualTreeAsset;
或更直接:
var template = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("path/to/file.uxml");
然后,您可以构建此模板代表的可视树并将其附加到父元素:
template.CloneTree(parentElement, slots);
在上面的语句中,模板中的<UXML>元素本身并未被转换为VisualElement,而它的所有子节点都被转换和附加到指定的parentElement元素。
实例化模板后,您可以使用UQuery从Unity可视元素树中检索特定元素:Unity的JQuery / Linq实现。
例如,以下代码演示了如何新建一个EditorWindow并加载UXML文件作为其内容:
public class MyWindow : EditorWindow {
[MenuItem ("Window/My Window")]
public static void ShowWindow () {
EditorWindow w = EditorWindow.GetWindow(typeof(MyWindow));
VisualTreeAsset uiAsset = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/MyWindow.uxml");
VisualElement ui = uiAsset.CloneTree(null);
w.rootVisualElement.Add(ui);
}
void OnGUI () {
// Nothing to do here, unless you need to also handle IMGUI stuff.
}
}
本文介绍如何在C#中使用Unity的UXML来构建用户界面,包括加载UXML模板到VisualTreeAsset,实例化模板,并使用UQuery检索特定元素。通过具体代码示例,展示了如何在EditorWindow中加载和显示UXML文件。

被折叠的 条评论
为什么被折叠?



