做个unity自定义窗口的小记录

这篇博客记录了在Unity中创建自定义菜单窗口的过程,包括如何通过菜单呼出窗口、创建窗体以及绘制GUI元素。作者实现了选择文件夹并搜索包含特定关键词的文件路径的功能,并详细介绍了关键代码和布局技巧,如GUILayout的使用、ScrollView的滚动更新以及EditorGUILayout.TextField和Button的交互方式。

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

做一个自定义窗口的小记录,虽然已经做了好几次拓展unity窗口的操作了,但是每次都要要上网查查,这次自己记录一下,加深印象。
实验要求:做一个再菜单里可以呼出的自己的窗口,窗口里面可以选择文件路径,然后找出文件中包含某个关键词的文件路径并显示。

第一步:菜单呼出
这个很简单:

 [MenuItem("Tools/SearchShader #Q")]
    public static  void Doit()
    {
        EditorWindow.GetWindow(typeof(HLXWnd));
        Debug.LogError("search....");
    }

方法前边加个[MenuItem(XX/XXXX)]就行了
后边空格 之后是快捷键按钮
#表示shift 还有什么表示ctrl(这个每次还是查一下 记不住。。。
注意方法一定要静态的static, 要不然无效,菜单栏里不会有。

第二步:创建窗体
这里关键在于继承EditorWnd这个类就好了,最简单的空白窗体就这样

public class HLXWnd : EditorWindow
{
   
    public void OnGUI()
    {
        
        
    }
    
}

OnGUI里面填写绘制窗口的代码就行了,注意这个函数是每帧执行的。
呼出HLXWnd的方法再第一步里
EditorWindow.GetWindow(typeof(HLXWnd));

第三步:绘制窗口
接下来再窗口里实现我想要的功能了,先把最终成果贴出来,方便说明
在这里插入图片描述
大概就是这样👆

几个关键点:
布局嵌套:
GUILayout.BeginHorizontal();
//中间写横板布局的内容
GUILayout.EndHorizontal();

GUILayout.BeginVertical();
//中间写竖板布局的内容
GUILayout.EndVertical();

GUILayout.Space(40);
//这表示空出来40大小的位置,你当前是横板布局就向右空出来,当前是竖版布局就是向下空出来;

static Vector2 scrollPos = Vector2.zero;
scrollPos= GUILayout.BeginScrollView(scrollPos);
//这个是开启一个scrollview的空间
//scrollPos是记录当时显示再scrollview的哪个位置,
这里一定要 scrollPos= GUILayout.BeginScrollView(scrollPos);这样写,把BeginScrollView的返回值再赋给scrollPos,这样才能实时更新他的位置,不然的话就永远在一开始设定的哪个位置,造成这个scrollview你滑不动这样的现象。
GUILayout.EndScrollView();

显示文字:

 static string t;
 t = EditorGUILayout.TextField("keyWord", t);

//"keyword"是描述文字,t是编辑框文字,同样赋予他返回值

显示按钮

if (GUILayout.Button("open"))
 {
    root = EditorUtility.OpenFolderPanel("select Folder", Application.dataPath, "");
 }

特别简单,我一开始还在Button()的参数里找是不是有点击的回调函数呢,后来发现他的返回值就是一个bool , 点击按钮就返回true,所以直接用if ,然后再里面写响应函数就好啦。

打开目录
就是之前写的
EditorUtility.OpenFolderPanel(“select Folder”, Application.dataPath, “”);这个函数就好啦,很方便的,这样就会把选择的文件路径返回出来,用root这个string存储进来了

大概就记录这些啦,查找关键字的代码和这个功能没啥关系,本菜鸡就不分享啦XDD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值