UI Toolkit常用API及使用

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;
        });
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值