Unity面板扩展Fold_Out

Unity面板扩展Fold_Out


EditorGUILayout.Foldout用于扩展一个面板的折叠选项

其中包含
截图自Unity官方文档
等参数,
在使用时发现有些需要注意的事项,在此做个笔记

首先需要注意,UnityEditor的文件只有在面板中Editor的文件夹下,才有用。

下面上代码

// 编辑器命名空间的引用
using UnityEditor; 
using Boo.Lang;//列表的命名空间

public class EditorTest_FoldOut : EditorWindow // 继承编译器窗口类
{
    //注意,需要声明 公有变量,否则 无法通过 鼠标点击 展开关闭菜单
    //private static bool foldout=false;//单个菜单直接声明一个变量即可
    private static List <bool> foldout=new List<bool>(); // 折叠菜单(多个菜单可以使用List 方便增删)

    // 在编辑器中添加一个菜单
    [MenuItem("编译器扩展/打开一个窗口")] 
    private static void CreateWindow() // 编译器 方法 需 静态,否则无用
    {
        //新增时  记得先添加 后赋值
        //每次点击打开菜单 则创建多一条消息
        foldout.Add(false);
        // 在这里面创建窗口
        EditorWindow.GetWindow(typeof(EditorTest_FoldOut), false, "表头的名字", true);
    }

    void OnGUI()
    {
        for (int i = 0; i < foldout.Count; i++)
        {
            foldout[i] = EditorGUILayout.Foldout(foldout[i], "名字" + i); // 注意Foldout第一个参数是个输出参数,只有经过了这个定位,才可被赋值于框内
            if (foldout[i])
            {
                EditorGUILayout.HelpBox("消息内容"+i, GetMessageType(i)); // 显示一个提示框MessageType. None  Info Warning Error
            }
        }

    }
    /// <summary>
    /// 获取MessageType
    /// </summary>
    /// <param name="i">限制</param>
    /// <returns></returns>
    public MessageType GetMessageType(int i)
    {
        switch (i % 4)
        {
            case 0:
                return MessageType.None;
            case 1:
                return MessageType.Info;
            case 2:
                return MessageType.Warning;
            case 3:
                return MessageType.Error;
            default:
                return MessageType.None;
        }
    }
}

HelpBox的提示,关于MessageType 的四种状态,提示效果不同
具体效果如下:
效果

注意在使用时 声明一定要在赋值前,
声明bool变量需要为公有变量,否则无法通过点击 来运用展开折叠

    void OnGUI()
    {
        bool errorDemonstration = true;//如此声明 将会导致无法修改bool状态 而导致无法收拢
           errorDemonstration = EditorGUILayout.Foldout(errorDemonstration, "错误示范");
        if(errorDemonstration)
        {
            EditorGUILayout.HelpBox("无法收拢的", MessageType.Error);
        }
      
     }

该代码虽然也会生成带有下拉箭头的文字
错误示范,无法收拢
但是却点不了(切记需要公有变量)

以上就是一点小小的心得分享,
如有缺漏或谬误 欢迎各位大佬多多指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值