Unity层级面板

本文介绍了Unity层级面板的实现思路与功能,包括自动生成层级对象、自动刷新排序、多选、重命名、拖动改变层级等。还提到了在多选操作时可能存在的性能问题,并提供了一个Demo案例下载地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity层级面板

入坑程序员也差不多一年有余了,但是一直没有养成写博客的良好习惯,这是不好滴,正好心血来潮,记录自己的一次学习心得,也供大家参考学习,大神请绕道走。

完整功能请参考Demo案例。 下载地址


## 主要实现Unity中的Hierarchy层级面板功能

在之前的一次开发中需要实现如上的功能,参考Unity的Hierarchy层级,也参考了网上一些道友的实现思路,已完成了功能模块的开发,现将功能模块提取出来记录,主要实现如下的一些功能:

  1. 给定对象自动生成层级对象(包含子物体)
  2. 自动刷新层级排序
  3. Ctrl多选,Shift多选
  4. 双击重命名选中对象
  5. 按下不放拖动改变层级关系
  6. 多选同时改变多个对象层级
    层级面板

**生成层级对象** 按照给定对象的父子物体层级生成,根据子物体顺序对应生成子对象,并记录子物体深度作为在层级面板中的层级,再根据层级对应刷新显示,刷新时根据层级对应排序。
    private void GenerateHierarchy()
    {
        // 记录当前在所有层级中的起点
        currentCreatIndex = allHierarchyItems.Count;
        // 生成层级面板UI初始化
        for (int i = 0; i < currentGenerateDatas.Count; i++)
        {
            GameObject treeObj = Instantiate(hierarchyItem, ItemParent) as GameObject;
            treeObj.transform.name = currentGenerateDatas[i].nameID;
            treeObj.transform.localPosition = Vector3.zero;
            treeObj.transform.localScale = Vector3.one;
            treeObj.transform.localRotation = Quaternion.Euler(Vector3.zero);

            HierarchyItem tvi = treeObj.GetComponent<HierarchyItem>();
            tvi.GameObjID = currentGenerateDatas[i].gameObjID;
            tvi.NameID = currentGenerateDatas[i].nameID;
            tvi.ChildDeep = currentGenerateDatas[i].childDeep;
            tvi.hierarchyText.text = tvi.NameID;
            allHierarchyItems.Add(tvi);

            // 添加监听事件
            UIEventListener.Get(tvi.hierarchyButton).onPress += delegate (GameObject go, bool isPressed)
            {
                OnClickSelect(treeObj, isPressed);
            };
            UIEventListener.Get(tvi.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值