IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity编辑器拓展(TreeView) -> 正文阅读

[游戏开发]Unity编辑器拓展(TreeView)

TreeView

?

用于显示可以展开和折叠的层级数据。

IMGUI.Controls.TreeView - Unity 脚本 APIhttps://docs.unity.cn/cn/2020.3/ScriptReference/IMGUI.Controls.TreeView.html

代码示例

SimpleTreeView.cs

using System.Collections.Generic;
using UnityEditor.IMGUI.Controls;

class SimpleTreeView : TreeView
{
    public SimpleTreeView(TreeViewState treeViewState)
        : base(treeViewState)
    {
        // 每次调用 Reload 时都调用 BuildRoot,从而确保使用数据
        Reload();
    }

    protected override TreeViewItem BuildRoot()
    {
        // 此部分说明 ID 应该是唯一的。根项的深度
        // 必须为 -1,其余项的深度在此基础上递增。
        var root = new TreeViewItem { id = 0, depth = -1, displayName = "Root" };
        var allItems = new List<TreeViewItem>
            {
                new TreeViewItem {id = 1, depth = 0, displayName = "Animals"},
                new TreeViewItem {id = 2, depth = 1, displayName = "Mammals"},
                new TreeViewItem {id = 3, depth = 2, displayName = "Tiger"},
                new TreeViewItem {id = 4, depth = 2, displayName = "Elephant"},
                new TreeViewItem {id = 5, depth = 2, displayName = "Okapi"},
                new TreeViewItem {id = 6, depth = 2, displayName = "Armadillo"},
                new TreeViewItem {id = 7, depth = 1, displayName = "Reptiles"},
                new TreeViewItem {id = 8, depth = 2, displayName = "Crocodile"},
                new TreeViewItem {id = 9, depth = 2, displayName = "Lizard"},
            };

        // 用于初始化所有项的 TreeViewItem.children 和 .parent 的实用方法。
        SetupParentsAndChildrenFromDepths(root, allItems);

        return root;
    }
}


SimpleTreeViewWindow.cs

using UnityEngine;
using UnityEditor.IMGUI.Controls;
using UnityEditor;

class SimpleTreeViewWindow : EditorWindow
{
    // SerializeField 用于确保将视图状态写入窗口
    // 布局文件。这意味着只要窗口未关闭,即使重新启动 Unity,也会保持
    // 状态。如果省略该属性,仍然会序列化/反序列化状态。
    [SerializeField] TreeViewState m_TreeViewState;
    //TreeView 不可序列化,因此应该通过树数据对其进行重建。
    SimpleTreeView m_TreeView;
    SearchField m_SearchField;

    void OnEnable()
    {
        //检查是否已存在序列化视图状态(在程序集重新加载后
        // 仍然存在的状态)
        if (m_TreeViewState == null)
            m_TreeViewState = new TreeViewState();

        m_TreeView = new SimpleTreeView(m_TreeViewState);
        m_SearchField = new SearchField();
        m_SearchField.downOrUpArrowKeyPressed += m_TreeView.SetFocusAndEnsureSelectedItem;
    }

    void OnGUI()
    {
        DoToolbar();
        DoTreeView();
    }

    //搜索框
    void DoToolbar()
    {
        GUILayout.BeginHorizontal(EditorStyles.toolbar);
        GUILayout.Space(100);
        GUILayout.FlexibleSpace();
        m_TreeView.searchString = m_SearchField.OnToolbarGUI(m_TreeView.searchString);
        GUILayout.EndHorizontal();
    }

    //绘制TreeView
    void DoTreeView()
    {
        Rect rect = GUILayoutUtility.GetRect(0, 100000, 0, 100000);
        m_TreeView.OnGUI(rect);
    }

    [MenuItem("TreeView Examples/Simple Tree Window")]
    static void ShowWindow()
    {
        var window = GetWindow<SimpleTreeViewWindow>();
        window.titleContent = new GUIContent("My Window");
        window.Show();
    }
}

?实现效果

编辑器免费课程:

独立游戏《Unity打造关卡编辑器》Unity 独立游戏 关卡编辑器icon-default.png?t=LA92https://bycwedu.vipwan.cn/promotion_channels/72762192?

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 19:09:43  更:2021-11-16 19:09:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 23:32:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码