Unity面板扩展Fold_Out
EditorGUILayout.Foldout用于扩展一个面板的折叠选项
其中包含
等参数,
在使用时发现有些需要注意的事项,在此做个笔记
首先需要注意,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);
}
}
该代码虽然也会生成带有下拉箭头的文字
但是却点不了(切记需要公有变量)
以上就是一点小小的心得分享,
如有缺漏或谬误 欢迎各位大佬多多指教。