using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEditor.UIElements;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
public class Windows : EditorWindow
{
[MenuItem("Window/UI Toolkit/Windows #Q")]
public static void ShowExample()
{
Windows wnd = GetWindow<Windows>();
wnd.titleContent = new GUIContent("技能编辑器");
}
public void CreateGUI()
{
//按钮
var add = root.Q<Button>("Add");
add.clicked += () =>
{
};
//折叠菜单及image头像赋值
var foldout = root.Q<Foldout>();
for (int i = 0; i < 3; i++)
{
var item = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Editor/item.uxml");
foldout.contentContainer.Add(item.Instantiate());
}
//VisualElement可以理解为一个空物体
var icon = root.Q<VisualElement>("Myicon");
for (int i = 0; i < root.Q<Foldout>().childCount; i++)
{
int index = i;
var vis = root.Q<Foldout>()[index];
var obj = vis.Q<ObjectField>();
vis.Q<Button>().clicked += () =>
{
var sprite = obj.value as Sprite;
var image = new Image();
image.sprite = sprite;
image.style.flexGrow = 1;
if (icon.childCount > 0)
{
icon.RemoveAt(0);
}
icon.Add(image);
};
}
//toggle
var tog = root.Q<Toggle>("MyTog");
var label = root.Q<Label>("MyLabel");
tog.RegisterValueChangedCallback((a) =>
{
//toggle控制文本的激活
if (a.newValue)
{
label.style.display = DisplayStyle.Flex;
}
else
{
label.style.display = DisplayStyle.None;
}
});
//listview
var view = root.Q<ListView>();
view.makeItem = () =>
{
//控制滑动列表里面的实体类型
return new Button();
};
//集合赋值
List<String> list=new List<String>();
view.itemsSource = list;
view.bindItem = (VisualElement l, int i) =>
{
Button label = l as Button;
label.clicked += () =>
{
};
};
//Vec3 Filed
var position = root.Q<Vector3Field>("");
position.RegisterValueChangedCallback((a) =>
{
player.transform.position = a.newValue;
});
//color
var c = root.Q<ColorField>();
GameObject cube = GameObject.Find("Cube");
c.RegisterValueChangedCallback((color) =>
{
cube.GetComponent<MeshRenderer>().sharedMaterial.color = color.newValue;
});
}
}
UI Toolkit常用API及使用
最新推荐文章于 2024-06-27 20:38:24 发布